From bee381f4f3b561f9b4c79e0149b8ca6dab8f8ca8 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:21:24 +0100 Subject: [PATCH] Unit Tests: Add unit tests for PR changes (#4) --- .gitignore | 1 + __tests__/workflows/publish.test.ts | 448 ++ coverage/clover.xml | 2452 +++++++++ coverage/coverage-final.json | 17 + coverage/lcov-report/base.css | 224 + coverage/lcov-report/block-navigation.js | 87 + coverage/lcov-report/favicon.png | 0 coverage/lcov-report/index.html | 161 + coverage/lcov-report/prettify.css | 1 + coverage/lcov-report/prettify.js | 2 + coverage/lcov-report/sort-arrow-sprite.png | 0 coverage/lcov-report/sorter.js | 210 + .../lcov-report/src/backend/adapter.ts.html | 3886 ++++++++++++++ .../src/backend/expand_value.ts.html | 937 ++++ coverage/lcov-report/src/backend/index.html | 161 + .../lcov-report/src/backend/mi2/index.html | 131 + .../lcov-report/src/backend/mi2/mi2.ts.html | 1786 +++++++ .../lcov-report/src/backend/mi2/types.ts.html | 334 ++ .../lcov-report/src/backend/mi_parse.ts.html | 1036 ++++ .../lcov-report/src/backend/symbols.ts.html | 586 ++ coverage/lcov-report/src/common.ts.html | 205 + coverage/lcov-report/src/extension.ts.html | 1375 +++++ .../src/frontend/configprovider.ts.html | 127 + .../disassembly_content_provider.ts.html | 184 + .../disassembly_tree_provider.ts.html | 235 + coverage/lcov-report/src/frontend/index.html | 206 + .../frontend/memory_content_provider.ts.html | 559 ++ .../src/frontend/memory_tree_provider.ts.html | 322 ++ .../src/frontend/peripheral.ts.html | 3628 +++++++++++++ .../src/frontend/registers.ts.html | 1165 ++++ coverage/lcov-report/src/index.html | 146 + coverage/lcov-report/src/utils.ts.html | 274 + coverage/lcov.info | 4706 +++++++++++++++++ jest.config.js | 14 + package-lock.json | 4120 +++++++++++++++ package.json | 12 +- 36 files changed, 29736 insertions(+), 2 deletions(-) create mode 100644 __tests__/workflows/publish.test.ts create mode 100644 coverage/clover.xml create mode 100644 coverage/coverage-final.json create mode 100644 coverage/lcov-report/base.css create mode 100644 coverage/lcov-report/block-navigation.js create mode 100644 coverage/lcov-report/favicon.png create mode 100644 coverage/lcov-report/index.html create mode 100644 coverage/lcov-report/prettify.css create mode 100644 coverage/lcov-report/prettify.js create mode 100644 coverage/lcov-report/sort-arrow-sprite.png create mode 100644 coverage/lcov-report/sorter.js create mode 100644 coverage/lcov-report/src/backend/adapter.ts.html create mode 100644 coverage/lcov-report/src/backend/expand_value.ts.html create mode 100644 coverage/lcov-report/src/backend/index.html create mode 100644 coverage/lcov-report/src/backend/mi2/index.html create mode 100644 coverage/lcov-report/src/backend/mi2/mi2.ts.html create mode 100644 coverage/lcov-report/src/backend/mi2/types.ts.html create mode 100644 coverage/lcov-report/src/backend/mi_parse.ts.html create mode 100644 coverage/lcov-report/src/backend/symbols.ts.html create mode 100644 coverage/lcov-report/src/common.ts.html create mode 100644 coverage/lcov-report/src/extension.ts.html create mode 100644 coverage/lcov-report/src/frontend/configprovider.ts.html create mode 100644 coverage/lcov-report/src/frontend/disassembly_content_provider.ts.html create mode 100644 coverage/lcov-report/src/frontend/disassembly_tree_provider.ts.html create mode 100644 coverage/lcov-report/src/frontend/index.html create mode 100644 coverage/lcov-report/src/frontend/memory_content_provider.ts.html create mode 100644 coverage/lcov-report/src/frontend/memory_tree_provider.ts.html create mode 100644 coverage/lcov-report/src/frontend/peripheral.ts.html create mode 100644 coverage/lcov-report/src/frontend/registers.ts.html create mode 100644 coverage/lcov-report/src/index.html create mode 100644 coverage/lcov-report/src/utils.ts.html create mode 100644 coverage/lcov.info create mode 100644 jest.config.js diff --git a/.gitignore b/.gitignore index 5d129de..380b6f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules/ out/ .vscode-test/ +coverage/ diff --git a/__tests__/workflows/publish.test.ts b/__tests__/workflows/publish.test.ts new file mode 100644 index 0000000..75fbf91 --- /dev/null +++ b/__tests__/workflows/publish.test.ts @@ -0,0 +1,448 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import * as yaml from 'js-yaml'; + +describe('GitHub Actions Publish Workflow', () => { + const workflowPath = path.join(__dirname, '../../.github/workflows/publish.yml'); + + function loadWorkflow(): { content: string; parsed: any; error: Error | null } { + try { + const content = fs.readFileSync(workflowPath, 'utf8'); + const parsed = yaml.load(content) as any; + return { content, parsed, error: null }; + } catch (e) { + return { content: '', parsed: null, error: e as Error }; + } + } + + describe('Workflow File Structure', () => { + test('workflow file should exist', () => { + expect(fs.existsSync(workflowPath)).toBe(true); + }); + + test('workflow file should be valid YAML', () => { + const { error } = loadWorkflow(); + expect(error).toBeNull(); + }); + + test('workflow should have a name', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.name).toBeDefined(); + expect(typeof workflow.name).toBe('string'); + }); + + test('workflow name should be "Publish to npm"', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.name).toBe('Publish to npm'); + }); + }); + + describe('Workflow Triggers', () => { + test('workflow should have "on" trigger definition', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.on).toBeDefined(); + }); + + test('workflow should trigger on release published event', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.on.release).toBeDefined(); + expect(workflow.on.release.types).toContain('published'); + }); + + test('workflow should only trigger on published releases', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.on.release.types).toEqual(['published']); + }); + + test('workflow should not have other trigger types', () => { + const { parsed: workflow } = loadWorkflow(); + const triggerKeys = Object.keys(workflow.on); + expect(triggerKeys).toEqual(['release']); + }); + }); + + describe('Workflow Permissions', () => { + test('workflow should have permissions defined', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.permissions).toBeDefined(); + }); + + test('workflow should have id-token write permission for provenance', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.permissions['id-token']).toBe('write'); + }); + + test('workflow should have contents read permission', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.permissions.contents).toBe('read'); + }); + + test('workflow should only have necessary permissions', () => { + const { parsed: workflow } = loadWorkflow(); + const permissionKeys = Object.keys(workflow.permissions); + expect(permissionKeys.sort()).toEqual(['contents', 'id-token'].sort()); + }); + + test('workflow should not have excessive permissions', () => { + const { parsed: workflow } = loadWorkflow(); + // Ensure no write access to contents or other dangerous permissions + expect(workflow.permissions.contents).not.toBe('write'); + expect(workflow.permissions.packages).toBeUndefined(); + expect(workflow.permissions.actions).toBeUndefined(); + }); + }); + + describe('Workflow Jobs', () => { + test('workflow should have jobs defined', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.jobs).toBeDefined(); + }); + + test('workflow should have a publish job', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.jobs.publish).toBeDefined(); + }); + + test('publish job should run on ubuntu-latest', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.jobs.publish['runs-on']).toBe('ubuntu-latest'); + }); + + test('publish job should have steps', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.jobs.publish.steps).toBeDefined(); + expect(Array.isArray(workflow.jobs.publish.steps)).toBe(true); + }); + + test('publish job should have at least 4 steps', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.jobs.publish.steps.length).toBeGreaterThanOrEqual(4); + }); + }); + + describe('Workflow Steps - Checkout and Setup', () => { + function getSteps() { + return loadWorkflow().parsed.jobs.publish.steps; + } + + test('first step should checkout the code', () => { + const steps = getSteps(); + expect(steps[0].uses).toMatch(/actions\/checkout@v/); + }); + + test('checkout should use v4 or later', () => { + const steps = getSteps(); + const checkoutVersion = steps[0].uses.match(/@v(\d+)/); + expect(checkoutVersion).not.toBeNull(); + expect(parseInt(checkoutVersion![1])).toBeGreaterThanOrEqual(4); + }); + + test('second step should setup Node.js', () => { + const steps = getSteps(); + expect(steps[1].uses).toMatch(/actions\/setup-node@v/); + }); + + test('Node.js setup should use v4 or later', () => { + const steps = getSteps(); + const nodeVersion = steps[1].uses.match(/@v(\d+)/); + expect(nodeVersion).not.toBeNull(); + expect(parseInt(nodeVersion![1])).toBeGreaterThanOrEqual(4); + }); + + test('Node.js should be configured with version 22', () => { + const steps = getSteps(); + expect(steps[1].with).toBeDefined(); + expect(String(steps[1].with['node-version'])).toBe('22'); + }); + + test('Node.js should be configured with npm registry', () => { + const steps = getSteps(); + expect(steps[1].with['registry-url']).toBe('https://registry.npmjs.org'); + }); + }); + + describe('Workflow Steps - Build Process', () => { + function getSteps() { + return loadWorkflow().parsed.jobs.publish.steps; + } + + test('should update npm to latest version', () => { + const steps = getSteps(); + const npmUpdateStep = steps.find(step => step.run && step.run.includes('npm install -g npm@latest')); + expect(npmUpdateStep).toBeDefined(); + }); + + test('should install dependencies', () => { + const steps = getSteps(); + const npmInstallStep = steps.find(step => step.run && (step.run === 'npm ci' || step.run === 'npm install')); + expect(npmInstallStep).toBeDefined(); + }); + + test('should run build command', () => { + const steps = getSteps(); + const buildStep = steps.find(step => step.run && step.run === 'npm run build'); + expect(buildStep).toBeDefined(); + }); + + test('build step should come after install', () => { + const steps = getSteps(); + const installStepIndex = steps.findIndex(step => step.run && (step.run === 'npm ci' || step.run === 'npm install')); + const buildStepIndex = steps.findIndex(step => step.run && step.run === 'npm run build'); + expect(buildStepIndex).toBeGreaterThan(installStepIndex); + }); + }); + + describe('Workflow Steps - Publishing', () => { + function getSteps() { + return loadWorkflow().parsed.jobs.publish.steps; + } + function getPublishStep() { + const steps = getSteps(); + return steps.find(step => step.run && step.run.includes('npm publish')); + } + + test('should have npm publish step', () => { + expect(getPublishStep()).toBeDefined(); + }); + + test('publish should use --provenance flag for transparency', () => { + expect(getPublishStep().run).toContain('--provenance'); + }); + + test('publish should use --access public flag', () => { + expect(getPublishStep().run).toContain('--access public'); + }); + + test('publish command should have both required flags', () => { + expect(getPublishStep().run).toMatch(/npm publish.*--provenance.*--access public/); + }); + + test('publish step should be the last step', () => { + const steps = getSteps(); + const publishStepIndex = steps.findIndex(step => step.run && step.run.includes('npm publish')); + expect(publishStepIndex).toBe(steps.length - 1); + }); + + test('publish step should come after build', () => { + const steps = getSteps(); + const buildStepIndex = steps.findIndex(step => step.run && step.run === 'npm run build'); + const publishStepIndex = steps.findIndex(step => step.run && step.run.includes('npm publish')); + expect(publishStepIndex).toBeGreaterThan(buildStepIndex); + }); + }); + + describe('Workflow Step Order and Dependencies', () => { + + test('steps should follow correct execution order', () => { + const steps = loadWorkflow().parsed.jobs.publish.steps; + const stepDescriptions = steps.map(step => { + if (step.uses) { + if (step.uses.includes('checkout')) return 'checkout'; + if (step.uses.includes('setup-node')) return 'setup-node'; + } + if (step.run) { + if (step.run.includes('npm install -g npm@latest')) return 'update-npm'; + if (step.run === 'npm ci' || step.run === 'npm install') return 'install'; + if (step.run === 'npm run build') return 'build'; + if (step.run.includes('npm publish')) return 'publish'; + } + return 'unknown'; + }); + + const expectedOrder = ['checkout', 'setup-node', 'update-npm', 'install', 'build', 'publish']; + expect(stepDescriptions).toEqual(expectedOrder); + }); + + test('all steps should be either actions or run commands', () => { + const steps = loadWorkflow().parsed.jobs.publish.steps; + steps.forEach(step => { + const hasUses = step.uses !== undefined; + const hasRun = step.run !== undefined; + expect(hasUses || hasRun).toBe(true); + }); + }); + }); + + describe('Security and Best Practices', () => { + test('workflow should use pinned action versions', () => { + const steps = loadWorkflow().parsed.jobs.publish.steps; + const actionSteps = steps.filter((step: any) => step.uses); + + actionSteps.forEach((step: any) => { + // Should have @v followed by a number + expect(step.uses).toMatch(/@v\d+/); + }); + }); + + test('workflow should use provenance for supply chain security', () => { + const { parsed: workflow } = loadWorkflow(); + const steps = workflow.jobs.publish.steps; + const publishStep = steps.find((step: any) => step.run && step.run.includes('npm publish')); + expect(publishStep.run).toContain('--provenance'); + }); + + test('workflow should have minimal permissions', () => { + const { parsed: workflow } = loadWorkflow(); + // id-token: write is required for provenance + // contents: read is minimal permission for checkout + expect(workflow.permissions['id-token']).toBe('write'); + expect(workflow.permissions.contents).toBe('read'); + + // Should not have write permissions for contents + expect(workflow.permissions.contents).not.toBe('write'); + }); + + test('workflow should update npm before installing', () => { + const { parsed: workflow } = loadWorkflow(); + const steps = workflow.jobs.publish.steps; + const npmUpdateStep = steps.find((step: any) => step.run && step.run.includes('npm install -g npm@latest')); + expect(npmUpdateStep).toBeDefined(); + }); + }); + + describe('Edge Cases and Error Scenarios', () => { + test('workflow should not have duplicate job names', () => { + const { parsed: workflow } = loadWorkflow(); + const jobNames = Object.keys(workflow.jobs); + const uniqueJobNames = new Set(jobNames); + expect(jobNames.length).toBe(uniqueJobNames.size); + }); + + test('workflow should not have empty steps', () => { + const { parsed: workflow } = loadWorkflow(); + const steps = workflow.jobs.publish.steps; + steps.forEach((step: any) => { + expect(step).not.toEqual({}); + }); + }); + + test('workflow YAML should not contain syntax errors', () => { + const { content } = loadWorkflow(); + expect(() => { + yaml.load(content, { schema: yaml.FAILSAFE_SCHEMA }); + }).not.toThrow(); + }); + + test('workflow should be idempotent', () => { + const { content } = loadWorkflow(); + // Multiple runs should produce same result + const parsed1 = yaml.load(content); + const parsed2 = yaml.load(content); + expect(parsed1).toEqual(parsed2); + }); + }); + + describe('Integration with Package Configuration', () => { + function loadPackageJson() { + const packagePath = path.join(__dirname, '../../package.json'); + if (fs.existsSync(packagePath)) { + const packageContent = fs.readFileSync(packagePath, 'utf8'); + return JSON.parse(packageContent); + } + return undefined; + } + + test('package.json should exist', () => { + expect(loadPackageJson()).toBeDefined(); + }); + + test('build script referenced in workflow should exist in package.json', () => { + const packageJson = loadPackageJson(); + expect(packageJson.scripts).toBeDefined(); + expect(packageJson.scripts.build).toBeDefined(); + }); + + test('build script should be executable', () => { + const packageJson = loadPackageJson(); + expect(typeof packageJson.scripts.build).toBe('string'); + expect(packageJson.scripts.build.length).toBeGreaterThan(0); + }); + + test('package should have a name for npm publishing', () => { + const packageJson = loadPackageJson(); + expect(packageJson.name).toBeDefined(); + expect(typeof packageJson.name).toBe('string'); + }); + + test('package should have a version for npm publishing', () => { + const packageJson = loadPackageJson(); + expect(packageJson.version).toBeDefined(); + expect(typeof packageJson.version).toBe('string'); + }); + }); + + describe('Workflow Completeness', () => { + test('workflow should have all required top-level keys', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.name).toBeDefined(); + expect(workflow.on).toBeDefined(); + expect(workflow.permissions).toBeDefined(); + expect(workflow.jobs).toBeDefined(); + }); + + test('workflow should not have deprecated syntax', () => { + const { content } = loadWorkflow(); + // Check that workflow doesn't use old syntax + expect(content).not.toContain('::set-output'); + expect(content).not.toContain('::save-state'); + }); + + test('workflow file should end with newline', () => { + const { content } = loadWorkflow(); + expect(content.endsWith('\n')).toBe(true); + }); + + test('workflow should use consistent indentation', () => { + const { content } = loadWorkflow(); + const lines = content.split('\n'); + const indentedLines = lines.filter(line => line.match(/^[ ]+/)); + + // Check that all indentation is consistent (multiples of 2) + indentedLines.forEach(line => { + const indent = line.match(/^[ ]+/); + if (indent) { + expect(indent[0].length % 2).toBe(0); + } + }); + }); + }); + + describe('Negative Test Cases', () => { + test('workflow should not trigger on push events', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.on.push).toBeUndefined(); + }); + + test('workflow should not trigger on pull request events', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.on.pull_request).toBeUndefined(); + }); + + test('workflow should not have manual workflow_dispatch trigger', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.on.workflow_dispatch).toBeUndefined(); + }); + + test('workflow should not have scheduled triggers', () => { + const { parsed: workflow } = loadWorkflow(); + expect(workflow.on.schedule).toBeUndefined(); + }); + + test('publish step should not use --dry-run flag', () => { + const { parsed: workflow } = loadWorkflow(); + const steps = workflow.jobs.publish.steps; + const publishStep = steps.find((step: any) => step.run && step.run.includes('npm publish')); + expect(publishStep.run).not.toContain('--dry-run'); + }); + + test('workflow should not skip git checks', () => { + const { content } = loadWorkflow(); + expect(content).not.toContain('--no-git-checks'); + }); + + test('workflow should not force publish', () => { + const { content } = loadWorkflow(); + expect(content).not.toContain('--force'); + }); + }); +}); \ No newline at end of file diff --git a/coverage/clover.xml b/coverage/clover.xml new file mode 100644 index 0000000..2ea877a --- /dev/null +++ b/coverage/clover.xml @@ -0,0 +1,2452 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json new file mode 100644 index 0000000..9dbf631 --- /dev/null +++ b/coverage/coverage-final.json @@ -0,0 +1,17 @@ +{"/home/jailuser/git/src/common.ts": {"path":"/home/jailuser/git/src/common.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":null}},"2":{"start":{"line":4,"column":4},"end":{"line":4,"column":null}},"3":{"start":{"line":5,"column":4},"end":{"line":5,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"5":{"start":{"line":7,"column":4},"end":{"line":7,"column":null}},"6":{"start":{"line":12,"column":8},"end":{"line":12,"column":51}},"7":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"8":{"start":{"line":18,"column":8},"end":{"line":18,"column":66}},"9":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}},"10":{"start":{"line":24,"column":8},"end":{"line":24,"column":71}},"11":{"start":{"line":22,"column":0},"end":{"line":22,"column":13}},"12":{"start":{"line":28,"column":0},"end":{"line":28,"column":null}},"13":{"start":{"line":29,"column":4},"end":{"line":29,"column":null}},"14":{"start":{"line":30,"column":4},"end":{"line":30,"column":null}},"15":{"start":{"line":31,"column":4},"end":{"line":31,"column":null}},"16":{"start":{"line":32,"column":4},"end":{"line":32,"column":null}},"17":{"start":{"line":35,"column":0},"end":{"line":35,"column":null}},"18":{"start":{"line":36,"column":4},"end":{"line":36,"column":null}},"19":{"start":{"line":37,"column":4},"end":{"line":37,"column":null}},"20":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"21":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":0},"end":{"line":3,"column":12}},"loc":{"start":{"line":3,"column":24},"end":{"line":8,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":16}},"loc":{"start":{"line":11,"column":45},"end":{"line":13,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":16}},"loc":{"start":{"line":17,"column":76},"end":{"line":19,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":4},"end":{"line":23,"column":16}},"loc":{"start":{"line":23,"column":85},"end":{"line":25,"column":5}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":28,"column":0},"end":{"line":28,"column":12}},"loc":{"start":{"line":28,"column":22},"end":{"line":33,"column":1}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":35,"column":0},"end":{"line":35,"column":12}},"loc":{"start":{"line":35,"column":23},"end":{"line":40,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":null}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":24}},{"start":{"line":3,"column":24},"end":{"line":3,"column":null}}]},"1":{"loc":{"start":{"line":23,"column":65},"end":{"line":23,"column":85}},"type":"default-arg","locations":[{"start":{"line":23,"column":83},"end":{"line":23,"column":85}}]},"2":{"loc":{"start":{"line":28,"column":12},"end":{"line":28,"column":null}},"type":"binary-expr","locations":[{"start":{"line":28,"column":12},"end":{"line":28,"column":22}},{"start":{"line":28,"column":22},"end":{"line":28,"column":null}}]},"3":{"loc":{"start":{"line":35,"column":12},"end":{"line":35,"column":null}},"type":"binary-expr","locations":[{"start":{"line":35,"column":12},"end":{"line":35,"column":23}},{"start":{"line":35,"column":23},"end":{"line":35,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0,0],"1":[0],"2":[0,0],"3":[0,0]}} +,"/home/jailuser/git/src/extension.ts": {"path":"/home/jailuser/git/src/extension.ts","statementMap":{"0":{"start":{"line":426,"column":0},"end":{"line":426,"column":16}},"1":{"start":{"line":430,"column":0},"end":{"line":430,"column":16}},"2":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"3":{"start":{"line":2,"column":0},"end":{"line":2,"column":53}},"4":{"start":{"line":3,"column":0},"end":{"line":3,"column":44}},"5":{"start":{"line":4,"column":0},"end":{"line":4,"column":81}},"6":{"start":{"line":5,"column":0},"end":{"line":5,"column":85}},"7":{"start":{"line":6,"column":0},"end":{"line":6,"column":79}},"8":{"start":{"line":7,"column":0},"end":{"line":7,"column":75}},"9":{"start":{"line":8,"column":0},"end":{"line":8,"column":69}},"10":{"start":{"line":9,"column":0},"end":{"line":9,"column":99}},"11":{"start":{"line":10,"column":0},"end":{"line":10,"column":94}},"12":{"start":{"line":13,"column":12},"end":{"line":13,"column":62}},"13":{"start":{"line":14,"column":12},"end":{"line":14,"column":42}},"14":{"start":{"line":23,"column":8},"end":{"line":23,"column":31}},"15":{"start":{"line":24,"column":8},"end":{"line":24,"column":59}},"16":{"start":{"line":25,"column":8},"end":{"line":25,"column":63}},"17":{"start":{"line":26,"column":8},"end":{"line":26,"column":59}},"18":{"start":{"line":27,"column":8},"end":{"line":27,"column":69}},"19":{"start":{"line":28,"column":8},"end":{"line":28,"column":65}},"20":{"start":{"line":30,"column":35},"end":{"line":32,"column":10}},"21":{"start":{"line":34,"column":8},"end":{"line":74,"column":10}},"22":{"start":{"line":70,"column":16},"end":{"line":72,"column":17}},"23":{"start":{"line":71,"column":20},"end":{"line":71,"column":66}},"24":{"start":{"line":78,"column":8},"end":{"line":78,"column":110}},"25":{"start":{"line":82,"column":8},"end":{"line":84,"column":9}},"26":{"start":{"line":83,"column":12},"end":{"line":83,"column":19}},"27":{"start":{"line":86,"column":20},"end":{"line":86,"column":39}},"28":{"start":{"line":87,"column":8},"end":{"line":93,"column":9}},"29":{"start":{"line":88,"column":12},"end":{"line":88,"column":99}},"30":{"start":{"line":89,"column":15},"end":{"line":93,"column":9}},"31":{"start":{"line":90,"column":12},"end":{"line":92,"column":15}},"32":{"start":{"line":97,"column":8},"end":{"line":100,"column":9}},"33":{"start":{"line":98,"column":12},"end":{"line":98,"column":77}},"34":{"start":{"line":99,"column":12},"end":{"line":99,"column":19}},"35":{"start":{"line":102,"column":8},"end":{"line":109,"column":9}},"36":{"start":{"line":103,"column":12},"end":{"line":108,"column":13}},"37":{"start":{"line":104,"column":31},"end":{"line":104,"column":107}},"38":{"start":{"line":105,"column":16},"end":{"line":105,"column":62}},"39":{"start":{"line":107,"column":16},"end":{"line":107,"column":109}},"40":{"start":{"line":111,"column":8},"end":{"line":146,"column":9}},"41":{"start":{"line":112,"column":29},"end":{"line":116,"column":14}},"42":{"start":{"line":118,"column":28},"end":{"line":118,"column":83}},"43":{"start":{"line":118,"column":63},"end":{"line":118,"column":82}},"44":{"start":{"line":121,"column":12},"end":{"line":139,"column":13}},"45":{"start":{"line":122,"column":16},"end":{"line":122,"column":74}},"46":{"start":{"line":123,"column":19},"end":{"line":139,"column":13}},"47":{"start":{"line":124,"column":33},"end":{"line":133,"column":null}},"48":{"start":{"line":125,"column":40},"end":{"line":132,"column":22}},"49":{"start":{"line":135,"column":16},"end":{"line":135,"column":70}},"50":{"start":{"line":137,"column":16},"end":{"line":137,"column":91}},"51":{"start":{"line":138,"column":16},"end":{"line":138,"column":23}},"52":{"start":{"line":141,"column":12},"end":{"line":143,"column":13}},"53":{"start":{"line":142,"column":16},"end":{"line":142,"column":70}},"54":{"start":{"line":145,"column":12},"end":{"line":145,"column":74}},"55":{"start":{"line":150,"column":22},"end":{"line":154,"column":9}},"56":{"start":{"line":151,"column":27},"end":{"line":151,"column":45}},"57":{"start":{"line":152,"column":12},"end":{"line":152,"column":67}},"58":{"start":{"line":153,"column":12},"end":{"line":153,"column":109}},"59":{"start":{"line":156,"column":8},"end":{"line":158,"column":9}},"60":{"start":{"line":157,"column":12},"end":{"line":157,"column":39}},"61":{"start":{"line":160,"column":8},"end":{"line":179,"column":14}},"62":{"start":{"line":176,"column":20},"end":{"line":176,"column":42}},"63":{"start":{"line":183,"column":34},"end":{"line":183,"column":55}},"64":{"start":{"line":184,"column":8},"end":{"line":184,"column":63}},"65":{"start":{"line":188,"column":8},"end":{"line":188,"column":47}},"66":{"start":{"line":193,"column":12},"end":{"line":195,"column":13}},"67":{"start":{"line":194,"column":16},"end":{"line":194,"column":29}},"68":{"start":{"line":196,"column":12},"end":{"line":196,"column":24}},"69":{"start":{"line":199,"column":8},"end":{"line":202,"column":9}},"70":{"start":{"line":200,"column":12},"end":{"line":200,"column":77}},"71":{"start":{"line":201,"column":12},"end":{"line":201,"column":19}},"72":{"start":{"line":204,"column":8},"end":{"line":206,"column":9}},"73":{"start":{"line":205,"column":12},"end":{"line":205,"column":59}},"74":{"start":{"line":208,"column":8},"end":{"line":239,"column":14}},"75":{"start":{"line":216,"column":20},"end":{"line":236,"column":21}},"76":{"start":{"line":217,"column":24},"end":{"line":233,"column":30}},"77":{"start":{"line":225,"column":36},"end":{"line":230,"column":37}},"78":{"start":{"line":226,"column":40},"end":{"line":226,"column":103}},"79":{"start":{"line":227,"column":40},"end":{"line":227,"column":90}},"80":{"start":{"line":229,"column":40},"end":{"line":229,"column":97}},"81":{"start":{"line":235,"column":24},"end":{"line":235,"column":89}},"82":{"start":{"line":243,"column":8},"end":{"line":256,"column":14}},"83":{"start":{"line":251,"column":20},"end":{"line":251,"column":91}},"84":{"start":{"line":254,"column":20},"end":{"line":254,"column":89}},"85":{"start":{"line":260,"column":8},"end":{"line":269,"column":10}},"86":{"start":{"line":262,"column":16},"end":{"line":264,"column":17}},"87":{"start":{"line":263,"column":20},"end":{"line":263,"column":54}},"88":{"start":{"line":267,"column":16},"end":{"line":267,"column":94}},"89":{"start":{"line":273,"column":8},"end":{"line":275,"column":9}},"90":{"start":{"line":274,"column":12},"end":{"line":274,"column":43}},"91":{"start":{"line":276,"column":8},"end":{"line":283,"column":10}},"92":{"start":{"line":278,"column":16},"end":{"line":280,"column":17}},"93":{"start":{"line":279,"column":20},"end":{"line":279,"column":54}},"94":{"start":{"line":287,"column":22},"end":{"line":287,"column":46}},"95":{"start":{"line":288,"column":8},"end":{"line":290,"column":9}},"96":{"start":{"line":289,"column":12},"end":{"line":289,"column":50}},"97":{"start":{"line":294,"column":25},"end":{"line":299,"column":10}},"98":{"start":{"line":300,"column":8},"end":{"line":300,"column":44}},"99":{"start":{"line":301,"column":8},"end":{"line":301,"column":42}},"100":{"start":{"line":305,"column":8},"end":{"line":307,"column":9}},"101":{"start":{"line":306,"column":12},"end":{"line":306,"column":43}},"102":{"start":{"line":311,"column":22},"end":{"line":311,"column":46}},"103":{"start":{"line":312,"column":8},"end":{"line":314,"column":9}},"104":{"start":{"line":313,"column":12},"end":{"line":313,"column":50}},"105":{"start":{"line":318,"column":25},"end":{"line":323,"column":10}},"106":{"start":{"line":324,"column":8},"end":{"line":324,"column":44}},"107":{"start":{"line":325,"column":8},"end":{"line":325,"column":40}},"108":{"start":{"line":329,"column":8},"end":{"line":349,"column":9}},"109":{"start":{"line":330,"column":12},"end":{"line":330,"column":40}},"110":{"start":{"line":331,"column":12},"end":{"line":348,"column":14}},"111":{"start":{"line":333,"column":20},"end":{"line":335,"column":22}},"112":{"start":{"line":336,"column":20},"end":{"line":339,"column":22}},"113":{"start":{"line":340,"column":20},"end":{"line":342,"column":22}},"114":{"start":{"line":343,"column":20},"end":{"line":343,"column":71}},"115":{"start":{"line":346,"column":20},"end":{"line":346,"column":41}},"116":{"start":{"line":353,"column":8},"end":{"line":371,"column":9}},"117":{"start":{"line":354,"column":12},"end":{"line":357,"column":14}},"118":{"start":{"line":358,"column":12},"end":{"line":361,"column":14}},"119":{"start":{"line":362,"column":12},"end":{"line":365,"column":14}},"120":{"start":{"line":367,"column":12},"end":{"line":367,"column":59}},"121":{"start":{"line":368,"column":12},"end":{"line":368,"column":61}},"122":{"start":{"line":369,"column":12},"end":{"line":369,"column":61}},"123":{"start":{"line":370,"column":12},"end":{"line":370,"column":66}},"124":{"start":{"line":375,"column":8},"end":{"line":377,"column":9}},"125":{"start":{"line":376,"column":12},"end":{"line":376,"column":19}},"126":{"start":{"line":379,"column":8},"end":{"line":392,"column":9}},"127":{"start":{"line":381,"column":16},"end":{"line":381,"column":42}},"128":{"start":{"line":382,"column":16},"end":{"line":382,"column":22}},"129":{"start":{"line":384,"column":16},"end":{"line":384,"column":47}},"130":{"start":{"line":385,"column":16},"end":{"line":385,"column":22}},"131":{"start":{"line":387,"column":16},"end":{"line":387,"column":46}},"132":{"start":{"line":388,"column":16},"end":{"line":388,"column":22}},"133":{"start":{"line":390,"column":16},"end":{"line":390,"column":38}},"134":{"start":{"line":391,"column":16},"end":{"line":391,"column":22}},"135":{"start":{"line":396,"column":8},"end":{"line":396,"column":47}},"136":{"start":{"line":397,"column":8},"end":{"line":397,"column":45}},"137":{"start":{"line":399,"column":8},"end":{"line":403,"column":15}},"138":{"start":{"line":400,"column":29},"end":{"line":400,"column":61}},"139":{"start":{"line":402,"column":16},"end":{"line":402,"column":55}},"140":{"start":{"line":407,"column":8},"end":{"line":407,"column":49}},"141":{"start":{"line":408,"column":8},"end":{"line":408,"column":47}},"142":{"start":{"line":414,"column":8},"end":{"line":416,"column":9}},"143":{"start":{"line":415,"column":12},"end":{"line":415,"column":92}},"144":{"start":{"line":418,"column":30},"end":{"line":418,"column":44}},"145":{"start":{"line":419,"column":8},"end":{"line":421,"column":9}},"146":{"start":{"line":420,"column":12},"end":{"line":420,"column":28}},"147":{"start":{"line":422,"column":8},"end":{"line":422,"column":50}},"148":{"start":{"line":427,"column":4},"end":{"line":427,"column":49}}},"fnMap":{"0":{"name":"(anonymous_16)","decl":{"start":{"line":22,"column":4},"end":{"line":22,"column":16}},"loc":{"start":{"line":22,"column":48},"end":{"line":75,"column":5}}},"1":{"name":"(anonymous_17)","decl":{"start":{"line":69,"column":57},"end":{"line":69,"column":58}},"loc":{"start":{"line":69,"column":63},"end":{"line":73,"column":13}}},"2":{"name":"(anonymous_18)","decl":{"start":{"line":77,"column":12},"end":{"line":77,"column":29}},"loc":{"start":{"line":77,"column":29},"end":{"line":79,"column":5}}},"3":{"name":"(anonymous_19)","decl":{"start":{"line":81,"column":12},"end":{"line":81,"column":31}},"loc":{"start":{"line":81,"column":57},"end":{"line":94,"column":5}}},"4":{"name":"(anonymous_20)","decl":{"start":{"line":96,"column":18},"end":{"line":96,"column":33}},"loc":{"start":{"line":96,"column":33},"end":{"line":147,"column":null}}},"5":{"name":"(anonymous_22)","decl":{"start":{"line":118,"column":56},"end":{"line":118,"column":57}},"loc":{"start":{"line":118,"column":63},"end":{"line":118,"column":82}}},"6":{"name":"(anonymous_23)","decl":{"start":{"line":125,"column":32},"end":{"line":125,"column":33}},"loc":{"start":{"line":125,"column":40},"end":{"line":132,"column":22}}},"7":{"name":"(anonymous_24)","decl":{"start":{"line":149,"column":12},"end":{"line":149,"column":31}},"loc":{"start":{"line":149,"column":46},"end":{"line":180,"column":5}}},"8":{"name":"(anonymous_25)","decl":{"start":{"line":150,"column":22},"end":{"line":150,"column":23}},"loc":{"start":{"line":150,"column":40},"end":{"line":154,"column":9}}},"9":{"name":"(anonymous_26)","decl":{"start":{"line":175,"column":16},"end":{"line":175,"column":17}},"loc":{"start":{"line":175,"column":29},"end":{"line":177,"column":17}}},"10":{"name":"(anonymous_27)","decl":{"start":{"line":178,"column":16},"end":{"line":178,"column":17}},"loc":{"start":{"line":178,"column":24},"end":{"line":178,"column":27}}},"11":{"name":"(anonymous_28)","decl":{"start":{"line":182,"column":12},"end":{"line":182,"column":35}},"loc":{"start":{"line":182,"column":45},"end":{"line":185,"column":5}}},"12":{"name":"(anonymous_29)","decl":{"start":{"line":187,"column":12},"end":{"line":187,"column":30}},"loc":{"start":{"line":187,"column":30},"end":{"line":189,"column":5}}},"13":{"name":"(anonymous_30)","decl":{"start":{"line":191,"column":12},"end":{"line":191,"column":25}},"loc":{"start":{"line":191,"column":59},"end":{"line":240,"column":5}}},"14":{"name":"validateInput","decl":{"start":{"line":192,"column":17},"end":{"line":192,"column":30}},"loc":{"start":{"line":192,"column":44},"end":{"line":197,"column":9}}},"15":{"name":"(anonymous_32)","decl":{"start":{"line":215,"column":16},"end":{"line":215,"column":17}},"loc":{"start":{"line":215,"column":33},"end":{"line":237,"column":17}}},"16":{"name":"(anonymous_33)","decl":{"start":{"line":224,"column":32},"end":{"line":224,"column":33}},"loc":{"start":{"line":224,"column":48},"end":{"line":231,"column":33}}},"17":{"name":"(anonymous_34)","decl":{"start":{"line":232,"column":32},"end":{"line":232,"column":33}},"loc":{"start":{"line":232,"column":40},"end":{"line":232,"column":43}}},"18":{"name":"(anonymous_35)","decl":{"start":{"line":238,"column":16},"end":{"line":238,"column":17}},"loc":{"start":{"line":238,"column":24},"end":{"line":238,"column":27}}},"19":{"name":"(anonymous_36)","decl":{"start":{"line":242,"column":12},"end":{"line":242,"column":29}},"loc":{"start":{"line":242,"column":61},"end":{"line":257,"column":5}}},"20":{"name":"(anonymous_37)","decl":{"start":{"line":250,"column":16},"end":{"line":250,"column":17}},"loc":{"start":{"line":250,"column":24},"end":{"line":252,"column":17}}},"21":{"name":"(anonymous_38)","decl":{"start":{"line":253,"column":16},"end":{"line":253,"column":17}},"loc":{"start":{"line":253,"column":26},"end":{"line":255,"column":17}}},"22":{"name":"(anonymous_39)","decl":{"start":{"line":259,"column":12},"end":{"line":259,"column":33}},"loc":{"start":{"line":259,"column":43},"end":{"line":270,"column":5}}},"23":{"name":"(anonymous_40)","decl":{"start":{"line":261,"column":12},"end":{"line":261,"column":13}},"loc":{"start":{"line":261,"column":32},"end":{"line":265,"column":13}}},"24":{"name":"(anonymous_41)","decl":{"start":{"line":266,"column":12},"end":{"line":266,"column":13}},"loc":{"start":{"line":266,"column":27},"end":{"line":268,"column":13}}},"25":{"name":"(anonymous_42)","decl":{"start":{"line":272,"column":12},"end":{"line":272,"column":35}},"loc":{"start":{"line":272,"column":45},"end":{"line":284,"column":5}}},"26":{"name":"(anonymous_43)","decl":{"start":{"line":277,"column":12},"end":{"line":277,"column":13}},"loc":{"start":{"line":277,"column":32},"end":{"line":281,"column":13}}},"27":{"name":"(anonymous_44)","decl":{"start":{"line":282,"column":12},"end":{"line":282,"column":13}},"loc":{"start":{"line":282,"column":27},"end":{"line":282,"column":30}}},"28":{"name":"(anonymous_45)","decl":{"start":{"line":286,"column":12},"end":{"line":286,"column":32}},"loc":{"start":{"line":286,"column":42},"end":{"line":291,"column":5}}},"29":{"name":"(anonymous_46)","decl":{"start":{"line":293,"column":18},"end":{"line":293,"column":38}},"loc":{"start":{"line":293,"column":48},"end":{"line":302,"column":null}}},"30":{"name":"(anonymous_48)","decl":{"start":{"line":304,"column":12},"end":{"line":304,"column":33}},"loc":{"start":{"line":304,"column":43},"end":{"line":308,"column":5}}},"31":{"name":"(anonymous_49)","decl":{"start":{"line":310,"column":12},"end":{"line":310,"column":30}},"loc":{"start":{"line":310,"column":40},"end":{"line":315,"column":5}}},"32":{"name":"(anonymous_50)","decl":{"start":{"line":317,"column":18},"end":{"line":317,"column":36}},"loc":{"start":{"line":317,"column":46},"end":{"line":326,"column":null}}},"33":{"name":"(anonymous_52)","decl":{"start":{"line":328,"column":12},"end":{"line":328,"column":31}},"loc":{"start":{"line":328,"column":60},"end":{"line":350,"column":5}}},"34":{"name":"(anonymous_53)","decl":{"start":{"line":332,"column":16},"end":{"line":332,"column":17}},"loc":{"start":{"line":332,"column":30},"end":{"line":344,"column":17}}},"35":{"name":"(anonymous_54)","decl":{"start":{"line":345,"column":16},"end":{"line":345,"column":17}},"loc":{"start":{"line":345,"column":31},"end":{"line":347,"column":17}}},"36":{"name":"(anonymous_55)","decl":{"start":{"line":352,"column":12},"end":{"line":352,"column":34}},"loc":{"start":{"line":352,"column":63},"end":{"line":372,"column":5}}},"37":{"name":"(anonymous_56)","decl":{"start":{"line":374,"column":12},"end":{"line":374,"column":31}},"loc":{"start":{"line":374,"column":65},"end":{"line":393,"column":5}}},"38":{"name":"(anonymous_57)","decl":{"start":{"line":395,"column":12},"end":{"line":395,"column":29}},"loc":{"start":{"line":395,"column":63},"end":{"line":404,"column":5}}},"39":{"name":"(anonymous_58)","decl":{"start":{"line":400,"column":20},"end":{"line":400,"column":21}},"loc":{"start":{"line":400,"column":29},"end":{"line":400,"column":61}}},"40":{"name":"(anonymous_59)","decl":{"start":{"line":401,"column":21},"end":{"line":401,"column":22}},"loc":{"start":{"line":401,"column":29},"end":{"line":403,"column":13}}},"41":{"name":"(anonymous_60)","decl":{"start":{"line":406,"column":12},"end":{"line":406,"column":34}},"loc":{"start":{"line":406,"column":68},"end":{"line":409,"column":5}}},"42":{"name":"(anonymous_61)","decl":{"start":{"line":411,"column":12},"end":{"line":411,"column":25}},"loc":{"start":{"line":411,"column":59},"end":{"line":411,"column":69}}},"43":{"name":"(anonymous_62)","decl":{"start":{"line":413,"column":12},"end":{"line":413,"column":33}},"loc":{"start":{"line":413,"column":67},"end":{"line":423,"column":5}}},"44":{"name":"activate","decl":{"start":{"line":426,"column":16},"end":{"line":426,"column":24}},"loc":{"start":{"line":426,"column":57},"end":{"line":428,"column":1}}},"45":{"name":"deactivate","decl":{"start":{"line":430,"column":16},"end":{"line":430,"column":26}},"loc":{"start":{"line":430,"column":26},"end":{"line":430,"column":37}}}},"branchMap":{"0":{"loc":{"start":{"line":70,"column":16},"end":{"line":72,"column":17}},"type":"if","locations":[{"start":{"line":70,"column":16},"end":{"line":72,"column":17}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":70,"column":20},"end":{"line":70,"column":75}},"type":"binary-expr","locations":[{"start":{"line":70,"column":20},"end":{"line":70,"column":21}},{"start":{"line":70,"column":25},"end":{"line":70,"column":75}}]},"2":{"loc":{"start":{"line":78,"column":15},"end":{"line":78,"column":109}},"type":"binary-expr","locations":[{"start":{"line":78,"column":15},"end":{"line":78,"column":46}},{"start":{"line":78,"column":50},"end":{"line":78,"column":109}}]},"3":{"loc":{"start":{"line":82,"column":8},"end":{"line":84,"column":9}},"type":"if","locations":[{"start":{"line":82,"column":8},"end":{"line":84,"column":9}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":82,"column":12},"end":{"line":82,"column":48}},"type":"binary-expr","locations":[{"start":{"line":82,"column":12},"end":{"line":82,"column":19}},{"start":{"line":82,"column":23},"end":{"line":82,"column":48}}]},"5":{"loc":{"start":{"line":87,"column":8},"end":{"line":93,"column":9}},"type":"if","locations":[{"start":{"line":87,"column":8},"end":{"line":93,"column":9}},{"start":{"line":89,"column":15},"end":{"line":93,"column":9}}]},"6":{"loc":{"start":{"line":89,"column":15},"end":{"line":93,"column":9}},"type":"if","locations":[{"start":{"line":89,"column":15},"end":{"line":93,"column":9}},{"start":{},"end":{}}]},"7":{"loc":{"start":{"line":97,"column":8},"end":{"line":100,"column":9}},"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":100,"column":9}},{"start":{},"end":{}}]},"8":{"loc":{"start":{"line":102,"column":8},"end":{"line":109,"column":9}},"type":"if","locations":[{"start":{"line":102,"column":8},"end":{"line":109,"column":9}},{"start":{},"end":{}}]},"9":{"loc":{"start":{"line":121,"column":12},"end":{"line":139,"column":13}},"type":"if","locations":[{"start":{"line":121,"column":12},"end":{"line":139,"column":13}},{"start":{"line":123,"column":19},"end":{"line":139,"column":13}}]},"10":{"loc":{"start":{"line":123,"column":19},"end":{"line":139,"column":13}},"type":"if","locations":[{"start":{"line":123,"column":19},"end":{"line":139,"column":13}},{"start":{"line":136,"column":19},"end":{"line":139,"column":13}}]},"11":{"loc":{"start":{"line":131,"column":28},"end":{"line":131,"column":99}},"type":"cond-expr","locations":[{"start":{"line":131,"column":61},"end":{"line":131,"column":75}},{"start":{"line":131,"column":78},"end":{"line":131,"column":99}}]},"12":{"loc":{"start":{"line":141,"column":12},"end":{"line":143,"column":13}},"type":"if","locations":[{"start":{"line":141,"column":12},"end":{"line":143,"column":13}},{"start":{},"end":{}}]},"13":{"loc":{"start":{"line":156,"column":8},"end":{"line":158,"column":9}},"type":"if","locations":[{"start":{"line":156,"column":8},"end":{"line":158,"column":9}},{"start":{},"end":{}}]},"14":{"loc":{"start":{"line":193,"column":12},"end":{"line":195,"column":13}},"type":"if","locations":[{"start":{"line":193,"column":12},"end":{"line":195,"column":13}},{"start":{},"end":{}}]},"15":{"loc":{"start":{"line":193,"column":16},"end":{"line":193,"column":75}},"type":"binary-expr","locations":[{"start":{"line":193,"column":16},"end":{"line":193,"column":48}},{"start":{"line":193,"column":52},"end":{"line":193,"column":75}}]},"16":{"loc":{"start":{"line":199,"column":8},"end":{"line":202,"column":9}},"type":"if","locations":[{"start":{"line":199,"column":8},"end":{"line":202,"column":9}},{"start":{},"end":{}}]},"17":{"loc":{"start":{"line":204,"column":8},"end":{"line":206,"column":9}},"type":"if","locations":[{"start":{"line":204,"column":8},"end":{"line":206,"column":9}},{"start":{},"end":{}}]},"18":{"loc":{"start":{"line":204,"column":12},"end":{"line":204,"column":29}},"type":"binary-expr","locations":[{"start":{"line":204,"column":12},"end":{"line":204,"column":19}},{"start":{"line":204,"column":23},"end":{"line":204,"column":29}}]},"19":{"loc":{"start":{"line":216,"column":20},"end":{"line":236,"column":21}},"type":"if","locations":[{"start":{"line":216,"column":20},"end":{"line":236,"column":21}},{"start":{"line":234,"column":27},"end":{"line":236,"column":21}}]},"20":{"loc":{"start":{"line":225,"column":36},"end":{"line":230,"column":37}},"type":"if","locations":[{"start":{"line":225,"column":36},"end":{"line":230,"column":37}},{"start":{"line":228,"column":43},"end":{"line":230,"column":37}}]},"21":{"loc":{"start":{"line":262,"column":16},"end":{"line":264,"column":17}},"type":"if","locations":[{"start":{"line":262,"column":16},"end":{"line":264,"column":17}},{"start":{},"end":{}}]},"22":{"loc":{"start":{"line":273,"column":8},"end":{"line":275,"column":9}},"type":"if","locations":[{"start":{"line":273,"column":8},"end":{"line":275,"column":9}},{"start":{},"end":{}}]},"23":{"loc":{"start":{"line":278,"column":16},"end":{"line":280,"column":17}},"type":"if","locations":[{"start":{"line":278,"column":16},"end":{"line":280,"column":17}},{"start":{},"end":{}}]},"24":{"loc":{"start":{"line":288,"column":8},"end":{"line":290,"column":9}},"type":"if","locations":[{"start":{"line":288,"column":8},"end":{"line":290,"column":9}},{"start":{},"end":{}}]},"25":{"loc":{"start":{"line":305,"column":8},"end":{"line":307,"column":9}},"type":"if","locations":[{"start":{"line":305,"column":8},"end":{"line":307,"column":9}},{"start":{},"end":{}}]},"26":{"loc":{"start":{"line":312,"column":8},"end":{"line":314,"column":9}},"type":"if","locations":[{"start":{"line":312,"column":8},"end":{"line":314,"column":9}},{"start":{},"end":{}}]},"27":{"loc":{"start":{"line":329,"column":8},"end":{"line":349,"column":9}},"type":"if","locations":[{"start":{"line":329,"column":8},"end":{"line":349,"column":9}},{"start":{},"end":{}}]},"28":{"loc":{"start":{"line":353,"column":8},"end":{"line":371,"column":9}},"type":"if","locations":[{"start":{"line":353,"column":8},"end":{"line":371,"column":9}},{"start":{},"end":{}}]},"29":{"loc":{"start":{"line":375,"column":8},"end":{"line":377,"column":9}},"type":"if","locations":[{"start":{"line":375,"column":8},"end":{"line":377,"column":9}},{"start":{},"end":{}}]},"30":{"loc":{"start":{"line":379,"column":8},"end":{"line":392,"column":9}},"type":"switch","locations":[{"start":{"line":380,"column":12},"end":{"line":382,"column":22}},{"start":{"line":383,"column":12},"end":{"line":385,"column":22}},{"start":{"line":386,"column":12},"end":{"line":388,"column":22}},{"start":{"line":389,"column":12},"end":{"line":391,"column":22}}]},"31":{"loc":{"start":{"line":414,"column":8},"end":{"line":416,"column":9}},"type":"if","locations":[{"start":{"line":414,"column":8},"end":{"line":416,"column":9}},{"start":{},"end":{}}]},"32":{"loc":{"start":{"line":419,"column":8},"end":{"line":421,"column":9}},"type":"if","locations":[{"start":{"line":419,"column":8},"end":{"line":421,"column":9}},{"start":{},"end":{}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0,0,0],"31":[0,0],"32":[0,0]}} +,"/home/jailuser/git/src/utils.ts": {"path":"/home/jailuser/git/src/utils.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}},"1":{"start":{"line":9,"column":0},"end":{"line":9,"column":16}},"2":{"start":{"line":33,"column":0},"end":{"line":33,"column":16}},"3":{"start":{"line":42,"column":0},"end":{"line":42,"column":16}},"4":{"start":{"line":46,"column":0},"end":{"line":46,"column":16}},"5":{"start":{"line":56,"column":0},"end":{"line":56,"column":16}},"6":{"start":{"line":2,"column":17},"end":{"line":2,"column":35}},"7":{"start":{"line":3,"column":4},"end":{"line":5,"column":5}},"8":{"start":{"line":4,"column":8},"end":{"line":4,"column":30}},"9":{"start":{"line":6,"column":4},"end":{"line":6,"column":50}},"10":{"start":{"line":15,"column":17},"end":{"line":15,"column":42}},"11":{"start":{"line":16,"column":4},"end":{"line":18,"column":5}},"12":{"start":{"line":17,"column":8},"end":{"line":17,"column":30}},"13":{"start":{"line":20,"column":4},"end":{"line":28,"column":5}},"14":{"start":{"line":21,"column":27},"end":{"line":21,"column":50}},"15":{"start":{"line":22,"column":8},"end":{"line":24,"column":9}},"16":{"start":{"line":22,"column":21},"end":{"line":22,"column":22}},"17":{"start":{"line":23,"column":12},"end":{"line":23,"column":34}},"18":{"start":{"line":25,"column":23},"end":{"line":25,"column":47}},"19":{"start":{"line":26,"column":8},"end":{"line":26,"column":34}},"20":{"start":{"line":27,"column":8},"end":{"line":27,"column":46}},"21":{"start":{"line":30,"column":4},"end":{"line":30,"column":50}},"22":{"start":{"line":34,"column":15},"end":{"line":34,"column":16}},"23":{"start":{"line":35,"column":16},"end":{"line":35,"column":34}},"24":{"start":{"line":36,"column":4},"end":{"line":38,"column":5}},"25":{"start":{"line":36,"column":17},"end":{"line":36,"column":23}},"26":{"start":{"line":37,"column":8},"end":{"line":37,"column":39}},"27":{"start":{"line":39,"column":4},"end":{"line":39,"column":16}},"28":{"start":{"line":43,"column":4},"end":{"line":43,"column":66}},"29":{"start":{"line":47,"column":46},"end":{"line":47,"column":48}},"30":{"start":{"line":48,"column":18},"end":{"line":48,"column":91}},"31":{"start":{"line":49,"column":4},"end":{"line":52,"column":5}},"32":{"start":{"line":50,"column":22},"end":{"line":50,"column":37}},"33":{"start":{"line":51,"column":8},"end":{"line":51,"column":82}},"34":{"start":{"line":53,"column":4},"end":{"line":53,"column":18}},"35":{"start":{"line":57,"column":14},"end":{"line":57,"column":31}},"36":{"start":{"line":58,"column":4},"end":{"line":60,"column":5}},"37":{"start":{"line":59,"column":8},"end":{"line":59,"column":26}},"38":{"start":{"line":61,"column":4},"end":{"line":61,"column":60}},"39":{"start":{"line":62,"column":4},"end":{"line":62,"column":15}}},"fnMap":{"0":{"name":"hexFormat","decl":{"start":{"line":1,"column":16},"end":{"line":1,"column":25}},"loc":{"start":{"line":1,"column":91},"end":{"line":7,"column":1}}},"1":{"name":"binaryFormat","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":28}},"loc":{"start":{"line":13,"column":34},"end":{"line":31,"column":1}}},"2":{"name":"createMask","decl":{"start":{"line":33,"column":16},"end":{"line":33,"column":26}},"loc":{"start":{"line":33,"column":56},"end":{"line":40,"column":1}}},"3":{"name":"extractBits","decl":{"start":{"line":42,"column":16},"end":{"line":42,"column":27}},"loc":{"start":{"line":42,"column":72},"end":{"line":44,"column":1}}},"4":{"name":"parseQuery","decl":{"start":{"line":46,"column":16},"end":{"line":46,"column":26}},"loc":{"start":{"line":46,"column":46},"end":{"line":54,"column":1}}},"5":{"name":"encodeDisassembly","decl":{"start":{"line":56,"column":16},"end":{"line":56,"column":33}},"loc":{"start":{"line":56,"column":60},"end":{"line":63,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":1,"column":41},"end":{"line":1,"column":60}},"type":"default-arg","locations":[{"start":{"line":1,"column":59},"end":{"line":1,"column":60}}]},"1":{"loc":{"start":{"line":1,"column":62},"end":{"line":1,"column":91}},"type":"default-arg","locations":[{"start":{"line":1,"column":87},"end":{"line":1,"column":91}}]},"2":{"loc":{"start":{"line":6,"column":11},"end":{"line":6,"column":49}},"type":"cond-expr","locations":[{"start":{"line":6,"column":27},"end":{"line":6,"column":40}},{"start":{"line":6,"column":43},"end":{"line":6,"column":49}}]},"3":{"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":23}},"type":"default-arg","locations":[{"start":{"line":11,"column":22},"end":{"line":11,"column":23}}]},"4":{"loc":{"start":{"line":12,"column":4},"end":{"line":12,"column":33}},"type":"default-arg","locations":[{"start":{"line":12,"column":29},"end":{"line":12,"column":33}}]},"5":{"loc":{"start":{"line":13,"column":4},"end":{"line":13,"column":34}},"type":"default-arg","locations":[{"start":{"line":13,"column":29},"end":{"line":13,"column":34}}]},"6":{"loc":{"start":{"line":20,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":28,"column":5}},{"start":{},"end":{}}]},"7":{"loc":{"start":{"line":30,"column":11},"end":{"line":30,"column":49}},"type":"cond-expr","locations":[{"start":{"line":30,"column":27},"end":{"line":30,"column":40}},{"start":{"line":30,"column":43},"end":{"line":30,"column":49}}]},"8":{"loc":{"start":{"line":48,"column":19},"end":{"line":48,"column":79}},"type":"cond-expr","locations":[{"start":{"line":48,"column":44},"end":{"line":48,"column":65}},{"start":{"line":48,"column":68},"end":{"line":48,"column":79}}]},"9":{"loc":{"start":{"line":51,"column":66},"end":{"line":51,"column":80}},"type":"binary-expr","locations":[{"start":{"line":51,"column":66},"end":{"line":51,"column":74}},{"start":{"line":51,"column":78},"end":{"line":51,"column":80}}]},"10":{"loc":{"start":{"line":58,"column":4},"end":{"line":60,"column":5}},"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":60,"column":5}},{"start":{},"end":{}}]},"11":{"loc":{"start":{"line":61,"column":47},"end":{"line":61,"column":57}},"type":"binary-expr","locations":[{"start":{"line":61,"column":47},"end":{"line":61,"column":51}},{"start":{"line":61,"column":55},"end":{"line":61,"column":57}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0],"1":[0],"2":[0,0],"3":[0],"4":[0],"5":[0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0]}} +,"/home/jailuser/git/src/backend/adapter.ts": {"path":"/home/jailuser/git/src/backend/adapter.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":25}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":null}},"4":{"start":{"line":18,"column":0},"end":{"line":18,"column":61}},"5":{"start":{"line":19,"column":0},"end":{"line":19,"column":68}},"6":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"7":{"start":{"line":21,"column":0},"end":{"line":21,"column":45}},"8":{"start":{"line":22,"column":0},"end":{"line":22,"column":32}},"9":{"start":{"line":23,"column":0},"end":{"line":23,"column":36}},"10":{"start":{"line":24,"column":0},"end":{"line":24,"column":40}},"11":{"start":{"line":28,"column":15},"end":{"line":28,"column":27}},"12":{"start":{"line":29,"column":15},"end":{"line":29,"column":27}},"13":{"start":{"line":33,"column":29},"end":{"line":33,"column":34}},"14":{"start":{"line":34,"column":27},"end":{"line":34,"column":33}},"15":{"start":{"line":38,"column":8},"end":{"line":38,"column":51}},"16":{"start":{"line":44,"column":8},"end":{"line":44,"column":60}},"17":{"start":{"line":68,"column":8},"end":{"line":68,"column":47}},"18":{"start":{"line":49,"column":12},"end":{"line":49,"column":94}},"19":{"start":{"line":50,"column":12},"end":{"line":50,"column":68}},"20":{"start":{"line":51,"column":12},"end":{"line":51,"column":46}},"21":{"start":{"line":52,"column":12},"end":{"line":52,"column":51}},"22":{"start":{"line":53,"column":12},"end":{"line":53,"column":40}},"23":{"start":{"line":54,"column":12},"end":{"line":54,"column":37}},"24":{"start":{"line":55,"column":12},"end":{"line":55,"column":39}},"25":{"start":{"line":56,"column":12},"end":{"line":56,"column":58}},"26":{"start":{"line":57,"column":12},"end":{"line":57,"column":62}},"27":{"start":{"line":72,"column":8},"end":{"line":72,"column":71}},"28":{"start":{"line":73,"column":8},"end":{"line":73,"column":62}},"29":{"start":{"line":74,"column":8},"end":{"line":74,"column":73}},"30":{"start":{"line":75,"column":8},"end":{"line":75,"column":65}},"31":{"start":{"line":76,"column":8},"end":{"line":76,"column":61}},"32":{"start":{"line":77,"column":8},"end":{"line":77,"column":75}},"33":{"start":{"line":78,"column":8},"end":{"line":78,"column":68}},"34":{"start":{"line":79,"column":8},"end":{"line":79,"column":72}},"35":{"start":{"line":80,"column":8},"end":{"line":80,"column":71}},"36":{"start":{"line":81,"column":8},"end":{"line":81,"column":69}},"37":{"start":{"line":82,"column":8},"end":{"line":82,"column":82}},"38":{"start":{"line":83,"column":8},"end":{"line":83,"column":80}},"39":{"start":{"line":84,"column":8},"end":{"line":84,"column":84}},"40":{"start":{"line":85,"column":8},"end":{"line":85,"column":47}},"41":{"start":{"line":89,"column":8},"end":{"line":89,"column":60}},"42":{"start":{"line":90,"column":8},"end":{"line":90,"column":62}},"43":{"start":{"line":91,"column":8},"end":{"line":91,"column":55}},"44":{"start":{"line":92,"column":8},"end":{"line":92,"column":57}},"45":{"start":{"line":93,"column":8},"end":{"line":93,"column":63}},"46":{"start":{"line":94,"column":8},"end":{"line":94,"column":52}},"47":{"start":{"line":95,"column":8},"end":{"line":95,"column":49}},"48":{"start":{"line":96,"column":8},"end":{"line":96,"column":54}},"49":{"start":{"line":97,"column":8},"end":{"line":97,"column":60}},"50":{"start":{"line":98,"column":8},"end":{"line":98,"column":36}},"51":{"start":{"line":102,"column":8},"end":{"line":102,"column":25}},"52":{"start":{"line":103,"column":8},"end":{"line":103,"column":57}},"53":{"start":{"line":107,"column":8},"end":{"line":107,"column":25}},"54":{"start":{"line":108,"column":8},"end":{"line":108,"column":56}},"55":{"start":{"line":112,"column":8},"end":{"line":112,"column":26}},"56":{"start":{"line":113,"column":8},"end":{"line":113,"column":30}},"57":{"start":{"line":114,"column":8},"end":{"line":114,"column":29}},"58":{"start":{"line":115,"column":8},"end":{"line":115,"column":29}},"59":{"start":{"line":116,"column":8},"end":{"line":116,"column":32}},"60":{"start":{"line":117,"column":8},"end":{"line":117,"column":29}},"61":{"start":{"line":118,"column":8},"end":{"line":118,"column":39}},"62":{"start":{"line":119,"column":8},"end":{"line":119,"column":41}},"63":{"start":{"line":121,"column":24},"end":{"line":121,"column":33}},"64":{"start":{"line":122,"column":8},"end":{"line":124,"column":9}},"65":{"start":{"line":123,"column":12},"end":{"line":123,"column":57}},"66":{"start":{"line":125,"column":8},"end":{"line":127,"column":9}},"67":{"start":{"line":126,"column":12},"end":{"line":126,"column":60}},"68":{"start":{"line":128,"column":8},"end":{"line":128,"column":70}},"69":{"start":{"line":130,"column":8},"end":{"line":130,"column":57}},"70":{"start":{"line":131,"column":8},"end":{"line":131,"column":28}},"71":{"start":{"line":132,"column":8},"end":{"line":132,"column":68}},"72":{"start":{"line":133,"column":8},"end":{"line":133,"column":69}},"73":{"start":{"line":135,"column":8},"end":{"line":141,"column":11}},"74":{"start":{"line":136,"column":12},"end":{"line":136,"column":35}},"75":{"start":{"line":137,"column":12},"end":{"line":137,"column":32}},"76":{"start":{"line":138,"column":12},"end":{"line":138,"column":41}},"77":{"start":{"line":139,"column":12},"end":{"line":139,"column":82}},"78":{"start":{"line":140,"column":12},"end":{"line":140,"column":79}},"79":{"start":{"line":143,"column":8},"end":{"line":168,"column":14}},"80":{"start":{"line":150,"column":20},"end":{"line":150,"column":104}},"81":{"start":{"line":151,"column":20},"end":{"line":163,"column":21}},"82":{"start":{"line":152,"column":24},"end":{"line":152,"column":55}},"83":{"start":{"line":153,"column":24},"end":{"line":153,"column":44}},"84":{"start":{"line":154,"column":24},"end":{"line":154,"column":52}},"85":{"start":{"line":156,"column":24},"end":{"line":162,"column":25}},"86":{"start":{"line":157,"column":28},"end":{"line":161,"column":30}},"87":{"start":{"line":166,"column":20},"end":{"line":166,"column":101}},"88":{"start":{"line":172,"column":8},"end":{"line":238,"column":9}},"89":{"start":{"line":174,"column":16},"end":{"line":174,"column":50}},"90":{"start":{"line":175,"column":16},"end":{"line":175,"column":51}},"91":{"start":{"line":176,"column":16},"end":{"line":180,"column":17}},"92":{"start":{"line":177,"column":20},"end":{"line":177,"column":49}},"93":{"start":{"line":178,"column":20},"end":{"line":178,"column":83}},"94":{"start":{"line":179,"column":20},"end":{"line":179,"column":101}},"95":{"start":{"line":181,"column":16},"end":{"line":181,"column":44}},"96":{"start":{"line":182,"column":16},"end":{"line":182,"column":22}},"97":{"start":{"line":185,"column":16},"end":{"line":185,"column":91}},"98":{"start":{"line":186,"column":16},"end":{"line":186,"column":44}},"99":{"start":{"line":187,"column":16},"end":{"line":187,"column":22}},"100":{"start":{"line":190,"column":16},"end":{"line":190,"column":50}},"101":{"start":{"line":191,"column":16},"end":{"line":191,"column":35}},"102":{"start":{"line":192,"column":16},"end":{"line":192,"column":44}},"103":{"start":{"line":193,"column":16},"end":{"line":193,"column":22}},"104":{"start":{"line":196,"column":16},"end":{"line":196,"column":42}},"105":{"start":{"line":197,"column":16},"end":{"line":197,"column":44}},"106":{"start":{"line":198,"column":16},"end":{"line":198,"column":22}},"107":{"start":{"line":201,"column":16},"end":{"line":201,"column":82}},"108":{"start":{"line":202,"column":16},"end":{"line":202,"column":22}},"109":{"start":{"line":205,"column":16},"end":{"line":205,"column":81}},"110":{"start":{"line":206,"column":16},"end":{"line":206,"column":22}},"111":{"start":{"line":209,"column":16},"end":{"line":209,"column":58}},"112":{"start":{"line":210,"column":16},"end":{"line":210,"column":22}},"113":{"start":{"line":213,"column":16},"end":{"line":213,"column":61}},"114":{"start":{"line":214,"column":16},"end":{"line":214,"column":22}},"115":{"start":{"line":217,"column":16},"end":{"line":217,"column":56}},"116":{"start":{"line":218,"column":16},"end":{"line":218,"column":22}},"117":{"start":{"line":221,"column":34},"end":{"line":221,"column":46}},"118":{"start":{"line":222,"column":16},"end":{"line":222,"column":99}},"119":{"start":{"line":223,"column":16},"end":{"line":232,"column":18}},"120":{"start":{"line":225,"column":24},"end":{"line":225,"column":61}},"121":{"start":{"line":226,"column":24},"end":{"line":226,"column":52}},"122":{"start":{"line":229,"column":24},"end":{"line":229,"column":44}},"123":{"start":{"line":230,"column":24},"end":{"line":230,"column":91}},"124":{"start":{"line":233,"column":16},"end":{"line":233,"column":22}},"125":{"start":{"line":236,"column":16},"end":{"line":236,"column":62}},"126":{"start":{"line":237,"column":16},"end":{"line":237,"column":44}},"127":{"start":{"line":242,"column":8},"end":{"line":282,"column":9}},"128":{"start":{"line":243,"column":12},"end":{"line":255,"column":13}},"129":{"start":{"line":244,"column":31},"end":{"line":244,"column":93}},"130":{"start":{"line":245,"column":16},"end":{"line":251,"column":18}},"131":{"start":{"line":252,"column":16},"end":{"line":252,"column":44}},"132":{"start":{"line":254,"column":16},"end":{"line":254,"column":96}},"133":{"start":{"line":256,"column":15},"end":{"line":282,"column":9}},"134":{"start":{"line":257,"column":12},"end":{"line":279,"column":13}},"135":{"start":{"line":258,"column":27},"end":{"line":258,"column":83}},"136":{"start":{"line":259,"column":16},"end":{"line":276,"column":17}},"137":{"start":{"line":260,"column":20},"end":{"line":260,"column":86}},"138":{"start":{"line":261,"column":20},"end":{"line":267,"column":22}},"139":{"start":{"line":268,"column":20},"end":{"line":268,"column":48}},"140":{"start":{"line":270,"column":41},"end":{"line":272,"column":null}},"141":{"start":{"line":274,"column":20},"end":{"line":274,"column":53}},"142":{"start":{"line":275,"column":20},"end":{"line":275,"column":48}},"143":{"start":{"line":278,"column":16},"end":{"line":278,"column":96}},"144":{"start":{"line":281,"column":12},"end":{"line":281,"column":94}},"145":{"start":{"line":286,"column":21},"end":{"line":286,"column":75}},"146":{"start":{"line":287,"column":8},"end":{"line":289,"column":9}},"147":{"start":{"line":288,"column":12},"end":{"line":288,"column":82}},"148":{"start":{"line":290,"column":8},"end":{"line":292,"column":9}},"149":{"start":{"line":291,"column":12},"end":{"line":291,"column":24}},"150":{"start":{"line":294,"column":29},"end":{"line":294,"column":41}},"151":{"start":{"line":295,"column":27},"end":{"line":295,"column":53}},"152":{"start":{"line":296,"column":23},"end":{"line":297,"column":null}},"153":{"start":{"line":300,"column":29},"end":{"line":306,"column":11}},"154":{"start":{"line":300,"column":77},"end":{"line":306,"column":10}},"155":{"start":{"line":308,"column":8},"end":{"line":308,"column":41}},"156":{"start":{"line":309,"column":8},"end":{"line":309,"column":20}},"157":{"start":{"line":313,"column":27},"end":{"line":313,"column":48}},"158":{"start":{"line":314,"column":23},"end":{"line":315,"column":null}},"159":{"start":{"line":318,"column":8},"end":{"line":324,"column":12}},"160":{"start":{"line":318,"column":63},"end":{"line":324,"column":10}},"161":{"start":{"line":328,"column":8},"end":{"line":342,"column":10}},"162":{"start":{"line":330,"column":30},"end":{"line":330,"column":96}},"163":{"start":{"line":330,"column":78},"end":{"line":330,"column":95}},"164":{"start":{"line":331,"column":16},"end":{"line":335,"column":18}},"165":{"start":{"line":336,"column":16},"end":{"line":336,"column":44}},"166":{"start":{"line":339,"column":16},"end":{"line":339,"column":47}},"167":{"start":{"line":340,"column":16},"end":{"line":340,"column":98}},"168":{"start":{"line":346,"column":24},"end":{"line":346,"column":45}},"169":{"start":{"line":347,"column":8},"end":{"line":355,"column":10}},"170":{"start":{"line":349,"column":16},"end":{"line":349,"column":44}},"171":{"start":{"line":352,"column":16},"end":{"line":352,"column":47}},"172":{"start":{"line":353,"column":16},"end":{"line":353,"column":99}},"173":{"start":{"line":359,"column":8},"end":{"line":379,"column":10}},"174":{"start":{"line":361,"column":16},"end":{"line":372,"column":17}},"175":{"start":{"line":362,"column":38},"end":{"line":362,"column":72}},"176":{"start":{"line":363,"column":20},"end":{"line":369,"column":23}},"177":{"start":{"line":364,"column":41},"end":{"line":364,"column":43}},"178":{"start":{"line":365,"column":24},"end":{"line":367,"column":27}},"179":{"start":{"line":366,"column":28},"end":{"line":366,"column":51}},"180":{"start":{"line":368,"column":24},"end":{"line":368,"column":35}},"181":{"start":{"line":371,"column":20},"end":{"line":371,"column":74}},"182":{"start":{"line":373,"column":16},"end":{"line":373,"column":44}},"183":{"start":{"line":376,"column":16},"end":{"line":376,"column":47}},"184":{"start":{"line":377,"column":16},"end":{"line":377,"column":101}},"185":{"start":{"line":383,"column":8},"end":{"line":402,"column":10}},"186":{"start":{"line":385,"column":16},"end":{"line":395,"column":17}},"187":{"start":{"line":387,"column":20},"end":{"line":391,"column":23}},"188":{"start":{"line":388,"column":24},"end":{"line":390,"column":25}},"189":{"start":{"line":389,"column":28},"end":{"line":389,"column":45}},"190":{"start":{"line":392,"column":20},"end":{"line":392,"column":42}},"191":{"start":{"line":394,"column":20},"end":{"line":394,"column":76}},"192":{"start":{"line":396,"column":16},"end":{"line":396,"column":44}},"193":{"start":{"line":399,"column":16},"end":{"line":399,"column":47}},"194":{"start":{"line":400,"column":16},"end":{"line":400,"column":105}},"195":{"start":{"line":406,"column":8},"end":{"line":412,"column":9}},"196":{"start":{"line":407,"column":12},"end":{"line":411,"column":13}},"197":{"start":{"line":408,"column":16},"end":{"line":408,"column":41}},"198":{"start":{"line":410,"column":16},"end":{"line":410,"column":43}},"199":{"start":{"line":413,"column":8},"end":{"line":413,"column":36}},"200":{"start":{"line":417,"column":8},"end":{"line":419,"column":9}},"201":{"start":{"line":418,"column":12},"end":{"line":418,"column":35}},"202":{"start":{"line":420,"column":8},"end":{"line":420,"column":36}},"203":{"start":{"line":424,"column":26},"end":{"line":441,"column":9}},"204":{"start":{"line":425,"column":12},"end":{"line":440,"column":18}},"205":{"start":{"line":429,"column":24},"end":{"line":429,"column":52}},"206":{"start":{"line":430,"column":24},"end":{"line":435,"column":31}},"207":{"start":{"line":431,"column":28},"end":{"line":431,"column":48}},"208":{"start":{"line":432,"column":28},"end":{"line":432,"column":59}},"209":{"start":{"line":433,"column":28},"end":{"line":433,"column":91}},"210":{"start":{"line":434,"column":28},"end":{"line":434,"column":100}},"211":{"start":{"line":438,"column":24},"end":{"line":438,"column":89}},"212":{"start":{"line":443,"column":8},"end":{"line":448,"column":9}},"213":{"start":{"line":444,"column":12},"end":{"line":444,"column":24}},"214":{"start":{"line":446,"column":12},"end":{"line":446,"column":63}},"215":{"start":{"line":447,"column":12},"end":{"line":447,"column":58}},"216":{"start":{"line":452,"column":8},"end":{"line":452,"column":60}},"217":{"start":{"line":456,"column":8},"end":{"line":458,"column":9}},"218":{"start":{"line":457,"column":12},"end":{"line":457,"column":28}},"219":{"start":{"line":459,"column":8},"end":{"line":461,"column":9}},"220":{"start":{"line":460,"column":12},"end":{"line":460,"column":28}},"221":{"start":{"line":462,"column":8},"end":{"line":462,"column":55}},"222":{"start":{"line":466,"column":8},"end":{"line":466,"column":29}},"223":{"start":{"line":467,"column":8},"end":{"line":467,"column":71}},"224":{"start":{"line":468,"column":8},"end":{"line":468,"column":77}},"225":{"start":{"line":472,"column":25},"end":{"line":472,"column":83}},"226":{"start":{"line":473,"column":8},"end":{"line":473,"column":28}},"227":{"start":{"line":474,"column":8},"end":{"line":474,"column":42}},"228":{"start":{"line":475,"column":8},"end":{"line":475,"column":71}},"229":{"start":{"line":476,"column":8},"end":{"line":476,"column":68}},"230":{"start":{"line":480,"column":8},"end":{"line":480,"column":28}},"231":{"start":{"line":481,"column":8},"end":{"line":481,"column":36}},"232":{"start":{"line":482,"column":8},"end":{"line":482,"column":77}},"233":{"start":{"line":483,"column":8},"end":{"line":483,"column":74}},"234":{"start":{"line":487,"column":8},"end":{"line":487,"column":28}},"235":{"start":{"line":488,"column":8},"end":{"line":488,"column":44}},"236":{"start":{"line":489,"column":8},"end":{"line":489,"column":85}},"237":{"start":{"line":490,"column":8},"end":{"line":490,"column":82}},"238":{"start":{"line":494,"column":8},"end":{"line":494,"column":66}},"239":{"start":{"line":498,"column":8},"end":{"line":498,"column":65}},"240":{"start":{"line":502,"column":8},"end":{"line":502,"column":45}},"241":{"start":{"line":503,"column":8},"end":{"line":503,"column":67}},"242":{"start":{"line":507,"column":8},"end":{"line":509,"column":9}},"243":{"start":{"line":508,"column":12},"end":{"line":508,"column":32}},"244":{"start":{"line":510,"column":8},"end":{"line":515,"column":9}},"245":{"start":{"line":511,"column":12},"end":{"line":511,"column":32}},"246":{"start":{"line":512,"column":12},"end":{"line":512,"column":45}},"247":{"start":{"line":513,"column":12},"end":{"line":513,"column":86}},"248":{"start":{"line":514,"column":12},"end":{"line":514,"column":83}},"249":{"start":{"line":519,"column":8},"end":{"line":519,"column":25}},"250":{"start":{"line":520,"column":8},"end":{"line":520,"column":46}},"251":{"start":{"line":524,"column":8},"end":{"line":524,"column":91}},"252":{"start":{"line":525,"column":8},"end":{"line":525,"column":25}},"253":{"start":{"line":529,"column":8},"end":{"line":531,"column":9}},"254":{"start":{"line":530,"column":12},"end":{"line":530,"column":19}},"255":{"start":{"line":533,"column":31},"end":{"line":562,"column":10}},"256":{"start":{"line":533,"column":65},"end":{"line":562,"column":10}},"257":{"start":{"line":534,"column":45},"end":{"line":534,"column":47}},"258":{"start":{"line":535,"column":12},"end":{"line":543,"column":15}},"259":{"start":{"line":536,"column":16},"end":{"line":542,"column":18}},"260":{"start":{"line":545,"column":12},"end":{"line":557,"column":13}},"261":{"start":{"line":546,"column":32},"end":{"line":546,"column":59}},"262":{"start":{"line":547,"column":43},"end":{"line":547,"column":45}},"263":{"start":{"line":548,"column":16},"end":{"line":552,"column":19}},"264":{"start":{"line":549,"column":20},"end":{"line":551,"column":21}},"265":{"start":{"line":550,"column":24},"end":{"line":550,"column":67}},"266":{"start":{"line":553,"column":16},"end":{"line":553,"column":48}},"267":{"start":{"line":554,"column":16},"end":{"line":554,"column":44}},"268":{"start":{"line":556,"column":16},"end":{"line":556,"column":69}},"269":{"start":{"line":559,"column":12},"end":{"line":561,"column":13}},"270":{"start":{"line":560,"column":16},"end":{"line":560,"column":67}},"271":{"start":{"line":564,"column":22},"end":{"line":573,"column":10}},"272":{"start":{"line":564,"column":33},"end":{"line":573,"column":10}},"273":{"start":{"line":565,"column":12},"end":{"line":572,"column":13}},"274":{"start":{"line":566,"column":16},"end":{"line":566,"column":44}},"275":{"start":{"line":568,"column":16},"end":{"line":568,"column":62}},"276":{"start":{"line":569,"column":16},"end":{"line":571,"column":19}},"277":{"start":{"line":570,"column":20},"end":{"line":570,"column":41}},"278":{"start":{"line":575,"column":8},"end":{"line":579,"column":9}},"279":{"start":{"line":576,"column":12},"end":{"line":576,"column":20}},"280":{"start":{"line":578,"column":12},"end":{"line":578,"column":55}},"281":{"start":{"line":583,"column":31},"end":{"line":643,"column":10}},"282":{"start":{"line":583,"column":65},"end":{"line":643,"column":10}},"283":{"start":{"line":584,"column":12},"end":{"line":584,"column":35}},"284":{"start":{"line":585,"column":40},"end":{"line":586,"column":null}},"285":{"start":{"line":586,"column":29},"end":{"line":586,"column":38}},"286":{"start":{"line":589,"column":12},"end":{"line":638,"column":13}},"287":{"start":{"line":590,"column":16},"end":{"line":590,"column":77}},"288":{"start":{"line":591,"column":16},"end":{"line":591,"column":61}},"289":{"start":{"line":593,"column":49},"end":{"line":593,"column":51}},"290":{"start":{"line":594,"column":36},"end":{"line":594,"column":72}},"291":{"start":{"line":596,"column":16},"end":{"line":624,"column":17}},"292":{"start":{"line":597,"column":35},"end":{"line":597,"column":91}},"293":{"start":{"line":598,"column":33},"end":{"line":598,"column":95}},"294":{"start":{"line":599,"column":20},"end":{"line":612,"column":23}},"295":{"start":{"line":600,"column":24},"end":{"line":611,"column":25}},"296":{"start":{"line":601,"column":48},"end":{"line":601,"column":78}},"297":{"start":{"line":602,"column":28},"end":{"line":610,"column":30}},"298":{"start":{"line":614,"column":20},"end":{"line":623,"column":23}},"299":{"start":{"line":615,"column":24},"end":{"line":622,"column":26}},"300":{"start":{"line":626,"column":32},"end":{"line":626,"column":87}},"301":{"start":{"line":626,"column":76},"end":{"line":626,"column":86}},"302":{"start":{"line":627,"column":16},"end":{"line":633,"column":18}},"303":{"start":{"line":628,"column":59},"end":{"line":632,"column":22}},"304":{"start":{"line":634,"column":16},"end":{"line":634,"column":66}},"305":{"start":{"line":635,"column":16},"end":{"line":635,"column":44}},"306":{"start":{"line":637,"column":16},"end":{"line":637,"column":68}},"307":{"start":{"line":640,"column":12},"end":{"line":642,"column":13}},"308":{"start":{"line":641,"column":16},"end":{"line":641,"column":67}},"309":{"start":{"line":645,"column":22},"end":{"line":654,"column":10}},"310":{"start":{"line":645,"column":33},"end":{"line":654,"column":10}},"311":{"start":{"line":646,"column":12},"end":{"line":653,"column":13}},"312":{"start":{"line":647,"column":16},"end":{"line":647,"column":44}},"313":{"start":{"line":649,"column":16},"end":{"line":649,"column":68}},"314":{"start":{"line":650,"column":16},"end":{"line":652,"column":19}},"315":{"start":{"line":651,"column":20},"end":{"line":651,"column":41}},"316":{"start":{"line":656,"column":8},"end":{"line":660,"column":9}},"317":{"start":{"line":657,"column":12},"end":{"line":657,"column":20}},"318":{"start":{"line":659,"column":12},"end":{"line":659,"column":55}},"319":{"start":{"line":664,"column":8},"end":{"line":668,"column":9}},"320":{"start":{"line":665,"column":12},"end":{"line":665,"column":44}},"321":{"start":{"line":666,"column":12},"end":{"line":666,"column":40}},"322":{"start":{"line":667,"column":12},"end":{"line":667,"column":19}},"323":{"start":{"line":670,"column":8},"end":{"line":704,"column":9}},"324":{"start":{"line":671,"column":27},"end":{"line":671,"column":79}},"325":{"start":{"line":672,"column":40},"end":{"line":672,"column":99}},"326":{"start":{"line":672,"column":84},"end":{"line":672,"column":98}},"327":{"start":{"line":673,"column":36},"end":{"line":673,"column":70}},"328":{"start":{"line":675,"column":12},"end":{"line":680,"column":13}},"329":{"start":{"line":676,"column":16},"end":{"line":676,"column":65}},"330":{"start":{"line":678,"column":16},"end":{"line":678,"column":83}},"331":{"start":{"line":679,"column":16},"end":{"line":679,"column":52}},"332":{"start":{"line":682,"column":38},"end":{"line":683,"column":null}},"333":{"start":{"line":683,"column":38},"end":{"line":683,"column":86}},"334":{"start":{"line":686,"column":28},"end":{"line":698,"column":42}},"335":{"start":{"line":688,"column":33},"end":{"line":688,"column":55}},"336":{"start":{"line":689,"column":20},"end":{"line":695,"column":21}},"337":{"start":{"line":690,"column":24},"end":{"line":690,"column":43}},"338":{"start":{"line":691,"column":35},"end":{"line":691,"column":73}},"339":{"start":{"line":692,"column":41},"end":{"line":692,"column":76}},"340":{"start":{"line":693,"column":40},"end":{"line":693,"column":73}},"341":{"start":{"line":694,"column":24},"end":{"line":694,"column":67}},"342":{"start":{"line":696,"column":20},"end":{"line":696,"column":32}},"343":{"start":{"line":698,"column":31},"end":{"line":698,"column":41}},"344":{"start":{"line":700,"column":12},"end":{"line":700,"column":40}},"345":{"start":{"line":701,"column":12},"end":{"line":701,"column":40}},"346":{"start":{"line":703,"column":12},"end":{"line":703,"column":92}},"347":{"start":{"line":708,"column":8},"end":{"line":795,"column":9}},"348":{"start":{"line":709,"column":26},"end":{"line":709,"column":101}},"349":{"start":{"line":710,"column":41},"end":{"line":710,"column":43}},"350":{"start":{"line":712,"column":12},"end":{"line":789,"column":13}},"351":{"start":{"line":713,"column":35},"end":{"line":713,"column":89}},"352":{"start":{"line":714,"column":33},"end":{"line":714,"column":43}},"353":{"start":{"line":715,"column":37},"end":{"line":715,"column":71}},"354":{"start":{"line":717,"column":16},"end":{"line":719,"column":17}},"355":{"start":{"line":718,"column":20},"end":{"line":718,"column":77}},"356":{"start":{"line":721,"column":16},"end":{"line":730,"column":17}},"357":{"start":{"line":726,"column":33},"end":{"line":726,"column":99}},"358":{"start":{"line":727,"column":20},"end":{"line":729,"column":21}},"359":{"start":{"line":728,"column":24},"end":{"line":728,"column":46}},"360":{"start":{"line":732,"column":16},"end":{"line":788,"column":17}},"361":{"start":{"line":733,"column":20},"end":{"line":777,"column":21}},"362":{"start":{"line":734,"column":44},"end":{"line":736,"column":null}},"363":{"start":{"line":738,"column":41},"end":{"line":738,"column":43}},"364":{"start":{"line":739,"column":24},"end":{"line":743,"column":27}},"365":{"start":{"line":740,"column":28},"end":{"line":742,"column":29}},"366":{"start":{"line":741,"column":32},"end":{"line":741,"column":55}},"367":{"start":{"line":745,"column":24},"end":{"line":766,"column":25}},"368":{"start":{"line":746,"column":40},"end":{"line":746,"column":93}},"369":{"start":{"line":747,"column":28},"end":{"line":755,"column":30}},"370":{"start":{"line":757,"column":28},"end":{"line":765,"column":30}},"371":{"start":{"line":768,"column":24},"end":{"line":776,"column":26}},"372":{"start":{"line":779,"column":20},"end":{"line":787,"column":22}},"373":{"start":{"line":791,"column":12},"end":{"line":791,"column":52}},"374":{"start":{"line":792,"column":12},"end":{"line":792,"column":40}},"375":{"start":{"line":794,"column":12},"end":{"line":794,"column":97}},"376":{"start":{"line":799,"column":8},"end":{"line":799,"column":36}},"377":{"start":{"line":803,"column":23},"end":{"line":803,"column":41}},"378":{"start":{"line":804,"column":8},"end":{"line":804,"column":71}},"379":{"start":{"line":805,"column":8},"end":{"line":805,"column":53}},"380":{"start":{"line":806,"column":8},"end":{"line":806,"column":95}},"381":{"start":{"line":807,"column":8},"end":{"line":807,"column":35}},"382":{"start":{"line":808,"column":8},"end":{"line":808,"column":36}},"383":{"start":{"line":812,"column":8},"end":{"line":814,"column":9}},"384":{"start":{"line":813,"column":12},"end":{"line":813,"column":94}},"385":{"start":{"line":815,"column":8},"end":{"line":815,"column":56}},"386":{"start":{"line":820,"column":8},"end":{"line":825,"column":9}},"387":{"start":{"line":821,"column":12},"end":{"line":821,"column":60}},"388":{"start":{"line":823,"column":12},"end":{"line":823,"column":47}},"389":{"start":{"line":824,"column":12},"end":{"line":824,"column":60}},"390":{"start":{"line":826,"column":8},"end":{"line":826,"column":46}},"391":{"start":{"line":832,"column":8},"end":{"line":849,"column":9}},"392":{"start":{"line":833,"column":33},"end":{"line":833,"column":70}},"393":{"start":{"line":834,"column":12},"end":{"line":838,"column":15}},"394":{"start":{"line":835,"column":35},"end":{"line":835,"column":65}},"395":{"start":{"line":836,"column":31},"end":{"line":836,"column":70}},"396":{"start":{"line":837,"column":17},"end":{"line":837,"column":90}},"397":{"start":{"line":839,"column":27},"end":{"line":839,"column":60}},"398":{"start":{"line":840,"column":12},"end":{"line":840,"column":72}},"399":{"start":{"line":842,"column":12},"end":{"line":844,"column":13}},"400":{"start":{"line":843,"column":16},"end":{"line":843,"column":26}},"401":{"start":{"line":845,"column":12},"end":{"line":845,"column":71}},"402":{"start":{"line":846,"column":23},"end":{"line":846,"column":56}},"403":{"start":{"line":847,"column":12},"end":{"line":847,"column":36}},"404":{"start":{"line":848,"column":12},"end":{"line":848,"column":27}},"405":{"start":{"line":851,"column":8},"end":{"line":851,"column":22}},"406":{"start":{"line":860,"column":33},"end":{"line":860,"column":35}},"407":{"start":{"line":861,"column":8},"end":{"line":880,"column":9}},"408":{"start":{"line":862,"column":30},"end":{"line":862,"column":91}},"409":{"start":{"line":863,"column":12},"end":{"line":875,"column":13}},"410":{"start":{"line":864,"column":16},"end":{"line":874,"column":17}},"411":{"start":{"line":865,"column":36},"end":{"line":865,"column":64}},"412":{"start":{"line":866,"column":35},"end":{"line":866,"column":85}},"413":{"start":{"line":867,"column":20},"end":{"line":867,"column":64}},"414":{"start":{"line":869,"column":20},"end":{"line":873,"column":23}},"415":{"start":{"line":876,"column":12},"end":{"line":876,"column":42}},"416":{"start":{"line":877,"column":12},"end":{"line":877,"column":40}},"417":{"start":{"line":879,"column":12},"end":{"line":879,"column":85}},"418":{"start":{"line":884,"column":27},"end":{"line":884,"column":64}},"419":{"start":{"line":885,"column":33},"end":{"line":885,"column":35}},"420":{"start":{"line":887,"column":8},"end":{"line":897,"column":9}},"421":{"start":{"line":888,"column":12},"end":{"line":892,"column":13}},"422":{"start":{"line":889,"column":32},"end":{"line":889,"column":62}},"423":{"start":{"line":890,"column":31},"end":{"line":890,"column":82}},"424":{"start":{"line":891,"column":16},"end":{"line":891,"column":60}},"425":{"start":{"line":893,"column":12},"end":{"line":893,"column":42}},"426":{"start":{"line":894,"column":12},"end":{"line":894,"column":40}},"427":{"start":{"line":896,"column":12},"end":{"line":896,"column":101}},"428":{"start":{"line":906,"column":33},"end":{"line":906,"column":35}},"429":{"start":{"line":907,"column":8},"end":{"line":921,"column":9}},"430":{"start":{"line":908,"column":30},"end":{"line":908,"column":82}},"431":{"start":{"line":909,"column":29},"end":{"line":909,"column":47}},"432":{"start":{"line":910,"column":31},"end":{"line":910,"column":76}},"433":{"start":{"line":912,"column":12},"end":{"line":916,"column":13}},"434":{"start":{"line":913,"column":32},"end":{"line":913,"column":74}},"435":{"start":{"line":914,"column":31},"end":{"line":914,"column":82}},"436":{"start":{"line":915,"column":16},"end":{"line":915,"column":60}},"437":{"start":{"line":917,"column":12},"end":{"line":917,"column":42}},"438":{"start":{"line":918,"column":12},"end":{"line":918,"column":40}},"439":{"start":{"line":920,"column":12},"end":{"line":920,"column":101}},"440":{"start":{"line":930,"column":8},"end":{"line":969,"column":9}},"441":{"start":{"line":931,"column":12},"end":{"line":931,"column":90}},"442":{"start":{"line":932,"column":12},"end":{"line":966,"column":13}},"443":{"start":{"line":933,"column":36},"end":{"line":937,"column":null}},"444":{"start":{"line":940,"column":16},"end":{"line":963,"column":17}},"445":{"start":{"line":941,"column":20},"end":{"line":958,"column":21}},"446":{"start":{"line":942,"column":44},"end":{"line":950,"column":25}},"447":{"start":{"line":943,"column":28},"end":{"line":948,"column":29}},"448":{"start":{"line":944,"column":32},"end":{"line":946,"column":33}},"449":{"start":{"line":945,"column":36},"end":{"line":945,"column":56}},"450":{"start":{"line":947,"column":32},"end":{"line":947,"column":57}},"451":{"start":{"line":949,"column":28},"end":{"line":949,"column":37}},"452":{"start":{"line":951,"column":24},"end":{"line":957,"column":26}},"453":{"start":{"line":959,"column":20},"end":{"line":959,"column":60}},"454":{"start":{"line":960,"column":20},"end":{"line":960,"column":48}},"455":{"start":{"line":962,"column":20},"end":{"line":962,"column":85}},"456":{"start":{"line":965,"column":16},"end":{"line":965,"column":89}},"457":{"start":{"line":968,"column":12},"end":{"line":968,"column":85}},"458":{"start":{"line":975,"column":8},"end":{"line":977,"column":9}},"459":{"start":{"line":976,"column":12},"end":{"line":976,"column":63}},"460":{"start":{"line":979,"column":8},"end":{"line":983,"column":9}},"461":{"start":{"line":980,"column":31},"end":{"line":980,"column":61}},"462":{"start":{"line":981,"column":29},"end":{"line":981,"column":69}},"463":{"start":{"line":982,"column":12},"end":{"line":982,"column":84}},"464":{"start":{"line":985,"column":8},"end":{"line":992,"column":9}},"465":{"start":{"line":989,"column":31},"end":{"line":989,"column":61}},"466":{"start":{"line":990,"column":29},"end":{"line":990,"column":69}},"467":{"start":{"line":991,"column":12},"end":{"line":991,"column":85}},"468":{"start":{"line":994,"column":8},"end":{"line":994,"column":67}},"469":{"start":{"line":996,"column":8},"end":{"line":998,"column":9}},"470":{"start":{"line":997,"column":12},"end":{"line":997,"column":71}},"471":{"start":{"line":1000,"column":8},"end":{"line":1096,"column":9}},"472":{"start":{"line":1001,"column":12},"end":{"line":1092,"column":13}},"473":{"start":{"line":1002,"column":31},"end":{"line":1002,"column":37}},"474":{"start":{"line":1003,"column":16},"end":{"line":1019,"column":17}},"475":{"start":{"line":1004,"column":37},"end":{"line":1004,"column":87}},"476":{"start":{"line":1005,"column":38},"end":{"line":1014,"column":22}},"477":{"start":{"line":1006,"column":35},"end":{"line":1006,"column":67}},"478":{"start":{"line":1007,"column":24},"end":{"line":1007,"column":38}},"479":{"start":{"line":1008,"column":24},"end":{"line":1012,"column":25}},"480":{"start":{"line":1009,"column":28},"end":{"line":1009,"column":92}},"481":{"start":{"line":1011,"column":28},"end":{"line":1011,"column":91}},"482":{"start":{"line":1013,"column":24},"end":{"line":1013,"column":58}},"483":{"start":{"line":1015,"column":20},"end":{"line":1015,"column":50}},"484":{"start":{"line":1016,"column":20},"end":{"line":1016,"column":48}},"485":{"start":{"line":1018,"column":20},"end":{"line":1018,"column":93}},"486":{"start":{"line":1020,"column":19},"end":{"line":1092,"column":13}},"487":{"start":{"line":1021,"column":31},"end":{"line":1021,"column":37}},"488":{"start":{"line":1022,"column":16},"end":{"line":1088,"column":17}},"489":{"start":{"line":1023,"column":45},"end":{"line":1023,"column":47}},"490":{"start":{"line":1024,"column":36},"end":{"line":1024,"column":40}},"491":{"start":{"line":1025,"column":32},"end":{"line":1025,"column":33}},"492":{"start":{"line":1027,"column":33},"end":{"line":1030,"column":21}},"493":{"start":{"line":1028,"column":24},"end":{"line":1028,"column":54}},"494":{"start":{"line":1029,"column":24},"end":{"line":1029,"column":52}},"495":{"start":{"line":1032,"column":38},"end":{"line":1079,"column":22}},"496":{"start":{"line":1032,"column":49},"end":{"line":1079,"column":22}},"497":{"start":{"line":1033,"column":43},"end":{"line":1034,"column":null}},"498":{"start":{"line":1036,"column":24},"end":{"line":1078,"column":25}},"499":{"start":{"line":1037,"column":45},"end":{"line":1041,"column":null}},"500":{"start":{"line":1044,"column":28},"end":{"line":1075,"column":29}},"501":{"start":{"line":1045,"column":32},"end":{"line":1072,"column":33}},"502":{"start":{"line":1046,"column":36},"end":{"line":1058,"column":37}},"503":{"start":{"line":1047,"column":40},"end":{"line":1049,"column":41}},"504":{"start":{"line":1048,"column":44},"end":{"line":1048,"column":58}},"505":{"start":{"line":1050,"column":40},"end":{"line":1050,"column":58}},"506":{"start":{"line":1051,"column":43},"end":{"line":1058,"column":37}},"507":{"start":{"line":1052,"column":40},"end":{"line":1056,"column":43}},"508":{"start":{"line":1057,"column":40},"end":{"line":1057,"column":54}},"509":{"start":{"line":1059,"column":36},"end":{"line":1063,"column":39}},"510":{"start":{"line":1064,"column":36},"end":{"line":1064,"column":48}},"511":{"start":{"line":1066,"column":36},"end":{"line":1070,"column":39}},"512":{"start":{"line":1071,"column":36},"end":{"line":1071,"column":43}},"513":{"start":{"line":1074,"column":32},"end":{"line":1074,"column":98}},"514":{"start":{"line":1077,"column":28},"end":{"line":1077,"column":102}},"515":{"start":{"line":1081,"column":20},"end":{"line":1081,"column":32}},"516":{"start":{"line":1083,"column":20},"end":{"line":1087,"column":22}},"517":{"start":{"line":1090,"column":16},"end":{"line":1090,"column":54}},"518":{"start":{"line":1091,"column":16},"end":{"line":1091,"column":44}},"519":{"start":{"line":1094,"column":12},"end":{"line":1094,"column":46}},"520":{"start":{"line":1095,"column":12},"end":{"line":1095,"column":40}},"521":{"start":{"line":1100,"column":8},"end":{"line":1140,"column":9}},"522":{"start":{"line":1101,"column":12},"end":{"line":1115,"column":13}},"523":{"start":{"line":1102,"column":32},"end":{"line":1102,"column":106}},"524":{"start":{"line":1103,"column":31},"end":{"line":1103,"column":83}},"525":{"start":{"line":1104,"column":16},"end":{"line":1107,"column":18}},"526":{"start":{"line":1108,"column":16},"end":{"line":1108,"column":44}},"527":{"start":{"line":1110,"column":16},"end":{"line":1113,"column":18}},"528":{"start":{"line":1114,"column":16},"end":{"line":1114,"column":68}},"529":{"start":{"line":1116,"column":15},"end":{"line":1140,"column":9}},"530":{"start":{"line":1117,"column":12},"end":{"line":1126,"column":13}},"531":{"start":{"line":1118,"column":31},"end":{"line":1118,"column":84}},"532":{"start":{"line":1119,"column":16},"end":{"line":1122,"column":18}},"533":{"start":{"line":1123,"column":16},"end":{"line":1123,"column":44}},"534":{"start":{"line":1125,"column":16},"end":{"line":1125,"column":68}},"535":{"start":{"line":1128,"column":12},"end":{"line":1139,"column":14}},"536":{"start":{"line":1130,"column":20},"end":{"line":1133,"column":88}},"537":{"start":{"line":1134,"column":20},"end":{"line":1134,"column":48}},"538":{"start":{"line":1137,"column":20},"end":{"line":1137,"column":72}},"539":{"start":{"line":1144,"column":8},"end":{"line":1166,"column":9}},"540":{"start":{"line":1145,"column":26},"end":{"line":1145,"column":35}},"541":{"start":{"line":1146,"column":27},"end":{"line":1146,"column":76}},"542":{"start":{"line":1148,"column":12},"end":{"line":1159,"column":13}},"543":{"start":{"line":1149,"column":16},"end":{"line":1149,"column":76}},"544":{"start":{"line":1150,"column":19},"end":{"line":1159,"column":13}},"545":{"start":{"line":1151,"column":16},"end":{"line":1151,"column":52}},"546":{"start":{"line":1152,"column":19},"end":{"line":1159,"column":13}},"547":{"start":{"line":1153,"column":16},"end":{"line":1153,"column":51}},"548":{"start":{"line":1154,"column":19},"end":{"line":1159,"column":13}},"549":{"start":{"line":1158,"column":16},"end":{"line":1158,"column":52}},"550":{"start":{"line":1161,"column":27},"end":{"line":1161,"column":79}},"551":{"start":{"line":1162,"column":12},"end":{"line":1162,"column":62}},"552":{"start":{"line":1163,"column":12},"end":{"line":1163,"column":40}},"553":{"start":{"line":1165,"column":12},"end":{"line":1165,"column":86}},"554":{"start":{"line":1170,"column":8},"end":{"line":1177,"column":10}},"555":{"start":{"line":1172,"column":16},"end":{"line":1172,"column":44}},"556":{"start":{"line":1175,"column":16},"end":{"line":1175,"column":79}},"557":{"start":{"line":1181,"column":8},"end":{"line":1189,"column":10}},"558":{"start":{"line":1183,"column":16},"end":{"line":1183,"column":62}},"559":{"start":{"line":1184,"column":16},"end":{"line":1184,"column":44}},"560":{"start":{"line":1187,"column":16},"end":{"line":1187,"column":82}},"561":{"start":{"line":1193,"column":8},"end":{"line":1213,"column":9}},"562":{"start":{"line":1194,"column":33},"end":{"line":1194,"column":54}},"563":{"start":{"line":1195,"column":12},"end":{"line":1208,"column":13}},"564":{"start":{"line":1196,"column":30},"end":{"line":1196,"column":78}},"565":{"start":{"line":1197,"column":16},"end":{"line":1197,"column":75}},"566":{"start":{"line":1199,"column":16},"end":{"line":1207,"column":17}},"567":{"start":{"line":1203,"column":33},"end":{"line":1203,"column":99}},"568":{"start":{"line":1204,"column":20},"end":{"line":1206,"column":21}},"569":{"start":{"line":1205,"column":24},"end":{"line":1205,"column":46}},"570":{"start":{"line":1209,"column":12},"end":{"line":1209,"column":70}},"571":{"start":{"line":1210,"column":12},"end":{"line":1210,"column":40}},"572":{"start":{"line":1212,"column":12},"end":{"line":1212,"column":79}},"573":{"start":{"line":1217,"column":8},"end":{"line":1224,"column":10}},"574":{"start":{"line":1219,"column":16},"end":{"line":1219,"column":44}},"575":{"start":{"line":1222,"column":16},"end":{"line":1222,"column":82}},"576":{"start":{"line":1228,"column":8},"end":{"line":1248,"column":9}},"577":{"start":{"line":1229,"column":33},"end":{"line":1229,"column":54}},"578":{"start":{"line":1230,"column":12},"end":{"line":1243,"column":13}},"579":{"start":{"line":1231,"column":30},"end":{"line":1231,"column":78}},"580":{"start":{"line":1232,"column":16},"end":{"line":1232,"column":75}},"581":{"start":{"line":1234,"column":16},"end":{"line":1242,"column":17}},"582":{"start":{"line":1238,"column":33},"end":{"line":1238,"column":99}},"583":{"start":{"line":1239,"column":20},"end":{"line":1241,"column":21}},"584":{"start":{"line":1240,"column":24},"end":{"line":1240,"column":46}},"585":{"start":{"line":1244,"column":12},"end":{"line":1244,"column":70}},"586":{"start":{"line":1245,"column":12},"end":{"line":1245,"column":40}},"587":{"start":{"line":1247,"column":12},"end":{"line":1247,"column":79}},"588":{"start":{"line":1252,"column":8},"end":{"line":1254,"column":9}},"589":{"start":{"line":1253,"column":12},"end":{"line":1253,"column":42}},"590":{"start":{"line":1255,"column":8},"end":{"line":1257,"column":9}},"591":{"start":{"line":1256,"column":12},"end":{"line":1256,"column":67}},"592":{"start":{"line":1258,"column":8},"end":{"line":1263,"column":11}},"593":{"start":{"line":1259,"column":12},"end":{"line":1262,"column":15}},"594":{"start":{"line":1260,"column":16},"end":{"line":1260,"column":55}},"595":{"start":{"line":1261,"column":16},"end":{"line":1261,"column":32}},"596":{"start":{"line":48,"column":0},"end":{"line":48,"column":13}},"597":{"start":{"line":1267,"column":0},"end":{"line":1267,"column":34}}},"fnMap":{"0":{"name":"(anonymous_16)","decl":{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},"loc":{"start":{"line":29,"column":27},"end":{"line":30,"column":8}}},"1":{"name":"(anonymous_17)","decl":{"start":{"line":37,"column":4},"end":{"line":37,"column":16}},"loc":{"start":{"line":37,"column":48},"end":{"line":39,"column":5}}},"2":{"name":"(anonymous_18)","decl":{"start":{"line":43,"column":4},"end":{"line":43,"column":16}},"loc":{"start":{"line":43,"column":60},"end":{"line":45,"column":5}}},"3":{"name":"(anonymous_19)","decl":{"start":{"line":67,"column":4},"end":{"line":67,"column":16}},"loc":{"start":{"line":67,"column":67},"end":{"line":69,"column":5}}},"4":{"name":"(anonymous_20)","decl":{"start":{"line":71,"column":4},"end":{"line":71,"column":16}},"loc":{"start":{"line":71,"column":16},"end":{"line":86,"column":5}}},"5":{"name":"(anonymous_21)","decl":{"start":{"line":88,"column":14},"end":{"line":88,"column":31}},"loc":{"start":{"line":88,"column":56},"end":{"line":99,"column":5}}},"6":{"name":"(anonymous_22)","decl":{"start":{"line":101,"column":14},"end":{"line":101,"column":27}},"loc":{"start":{"line":101,"column":52},"end":{"line":104,"column":5}}},"7":{"name":"(anonymous_23)","decl":{"start":{"line":106,"column":14},"end":{"line":106,"column":27}},"loc":{"start":{"line":106,"column":52},"end":{"line":109,"column":5}}},"8":{"name":"(anonymous_24)","decl":{"start":{"line":111,"column":12},"end":{"line":111,"column":38}},"loc":{"start":{"line":111,"column":71},"end":{"line":169,"column":5}}},"9":{"name":"(anonymous_25)","decl":{"start":{"line":135,"column":44},"end":{"line":135,"column":47}},"loc":{"start":{"line":135,"column":49},"end":{"line":141,"column":9}}},"10":{"name":"(anonymous_26)","decl":{"start":{"line":149,"column":16},"end":{"line":149,"column":19}},"loc":{"start":{"line":149,"column":21},"end":{"line":164,"column":17}}},"11":{"name":"(anonymous_27)","decl":{"start":{"line":165,"column":16},"end":{"line":165,"column":17}},"loc":{"start":{"line":165,"column":24},"end":{"line":167,"column":17}}},"12":{"name":"(anonymous_28)","decl":{"start":{"line":171,"column":14},"end":{"line":171,"column":27}},"loc":{"start":{"line":171,"column":69},"end":{"line":239,"column":5}}},"13":{"name":"(anonymous_29)","decl":{"start":{"line":224,"column":20},"end":{"line":224,"column":21}},"loc":{"start":{"line":224,"column":31},"end":{"line":227,"column":21}}},"14":{"name":"(anonymous_30)","decl":{"start":{"line":228,"column":20},"end":{"line":228,"column":21}},"loc":{"start":{"line":228,"column":28},"end":{"line":231,"column":21}}},"15":{"name":"(anonymous_31)","decl":{"start":{"line":241,"column":20},"end":{"line":241,"column":38}},"loc":{"start":{"line":241,"column":63},"end":{"line":283,"column":null}}},"16":{"name":"(anonymous_33)","decl":{"start":{"line":285,"column":18},"end":{"line":285,"column":43}},"loc":{"start":{"line":285,"column":78},"end":{"line":310,"column":null}}},"17":{"name":"(anonymous_35)","decl":{"start":{"line":300,"column":60},"end":{"line":300,"column":61}},"loc":{"start":{"line":300,"column":77},"end":{"line":306,"column":10}}},"18":{"name":"(anonymous_36)","decl":{"start":{"line":312,"column":18},"end":{"line":312,"column":44}},"loc":{"start":{"line":312,"column":81},"end":{"line":325,"column":null}}},"19":{"name":"(anonymous_38)","decl":{"start":{"line":318,"column":46},"end":{"line":318,"column":47}},"loc":{"start":{"line":318,"column":63},"end":{"line":324,"column":10}}},"20":{"name":"(anonymous_39)","decl":{"start":{"line":327,"column":12},"end":{"line":327,"column":35}},"loc":{"start":{"line":327,"column":82},"end":{"line":343,"column":5}}},"21":{"name":"(anonymous_40)","decl":{"start":{"line":329,"column":12},"end":{"line":329,"column":13}},"loc":{"start":{"line":329,"column":21},"end":{"line":337,"column":13}}},"22":{"name":"(anonymous_41)","decl":{"start":{"line":330,"column":61},"end":{"line":330,"column":62}},"loc":{"start":{"line":330,"column":78},"end":{"line":330,"column":95}}},"23":{"name":"(anonymous_42)","decl":{"start":{"line":338,"column":12},"end":{"line":338,"column":13}},"loc":{"start":{"line":338,"column":20},"end":{"line":341,"column":13}}},"24":{"name":"(anonymous_43)","decl":{"start":{"line":345,"column":12},"end":{"line":345,"column":36}},"loc":{"start":{"line":345,"column":81},"end":{"line":356,"column":5}}},"25":{"name":"(anonymous_44)","decl":{"start":{"line":348,"column":12},"end":{"line":348,"column":13}},"loc":{"start":{"line":348,"column":23},"end":{"line":350,"column":13}}},"26":{"name":"(anonymous_45)","decl":{"start":{"line":351,"column":12},"end":{"line":351,"column":13}},"loc":{"start":{"line":351,"column":20},"end":{"line":354,"column":13}}},"27":{"name":"(anonymous_46)","decl":{"start":{"line":358,"column":12},"end":{"line":358,"column":38}},"loc":{"start":{"line":358,"column":52},"end":{"line":380,"column":5}}},"28":{"name":"(anonymous_47)","decl":{"start":{"line":360,"column":12},"end":{"line":360,"column":13}},"loc":{"start":{"line":360,"column":23},"end":{"line":374,"column":13}}},"29":{"name":"(anonymous_48)","decl":{"start":{"line":363,"column":50},"end":{"line":363,"column":51}},"loc":{"start":{"line":363,"column":63},"end":{"line":369,"column":21}}},"30":{"name":"(anonymous_49)","decl":{"start":{"line":365,"column":36},"end":{"line":365,"column":37}},"loc":{"start":{"line":365,"column":50},"end":{"line":367,"column":25}}},"31":{"name":"(anonymous_50)","decl":{"start":{"line":375,"column":12},"end":{"line":375,"column":13}},"loc":{"start":{"line":375,"column":20},"end":{"line":378,"column":13}}},"32":{"name":"(anonymous_51)","decl":{"start":{"line":382,"column":12},"end":{"line":382,"column":41}},"loc":{"start":{"line":382,"column":55},"end":{"line":403,"column":5}}},"33":{"name":"(anonymous_52)","decl":{"start":{"line":384,"column":12},"end":{"line":384,"column":13}},"loc":{"start":{"line":384,"column":23},"end":{"line":397,"column":13}}},"34":{"name":"(anonymous_53)","decl":{"start":{"line":387,"column":57},"end":{"line":387,"column":58}},"loc":{"start":{"line":387,"column":72},"end":{"line":391,"column":21}}},"35":{"name":"(anonymous_54)","decl":{"start":{"line":398,"column":12},"end":{"line":398,"column":13}},"loc":{"start":{"line":398,"column":20},"end":{"line":401,"column":13}}},"36":{"name":"(anonymous_55)","decl":{"start":{"line":405,"column":14},"end":{"line":405,"column":31}},"loc":{"start":{"line":405,"column":56},"end":{"line":414,"column":5}}},"37":{"name":"(anonymous_56)","decl":{"start":{"line":416,"column":14},"end":{"line":416,"column":30}},"loc":{"start":{"line":416,"column":55},"end":{"line":421,"column":5}}},"38":{"name":"(anonymous_57)","decl":{"start":{"line":423,"column":14},"end":{"line":423,"column":28}},"loc":{"start":{"line":423,"column":53},"end":{"line":449,"column":5}}},"39":{"name":"(anonymous_58)","decl":{"start":{"line":424,"column":26},"end":{"line":424,"column":29}},"loc":{"start":{"line":424,"column":31},"end":{"line":441,"column":9}}},"40":{"name":"(anonymous_59)","decl":{"start":{"line":428,"column":20},"end":{"line":428,"column":21}},"loc":{"start":{"line":428,"column":31},"end":{"line":436,"column":21}}},"41":{"name":"(anonymous_60)","decl":{"start":{"line":430,"column":35},"end":{"line":430,"column":38}},"loc":{"start":{"line":430,"column":40},"end":{"line":435,"column":25}}},"42":{"name":"(anonymous_61)","decl":{"start":{"line":437,"column":20},"end":{"line":437,"column":21}},"loc":{"start":{"line":437,"column":28},"end":{"line":439,"column":21}}},"43":{"name":"(anonymous_62)","decl":{"start":{"line":451,"column":12},"end":{"line":451,"column":31}},"loc":{"start":{"line":451,"column":44},"end":{"line":453,"column":5}}},"44":{"name":"(anonymous_63)","decl":{"start":{"line":455,"column":12},"end":{"line":455,"column":21}},"loc":{"start":{"line":455,"column":51},"end":{"line":463,"column":5}}},"45":{"name":"(anonymous_64)","decl":{"start":{"line":465,"column":12},"end":{"line":465,"column":25}},"loc":{"start":{"line":465,"column":35},"end":{"line":469,"column":5}}},"46":{"name":"(anonymous_65)","decl":{"start":{"line":471,"column":12},"end":{"line":471,"column":28}},"loc":{"start":{"line":471,"column":38},"end":{"line":477,"column":5}}},"47":{"name":"(anonymous_66)","decl":{"start":{"line":479,"column":12},"end":{"line":479,"column":23}},"loc":{"start":{"line":479,"column":33},"end":{"line":484,"column":5}}},"48":{"name":"(anonymous_67)","decl":{"start":{"line":486,"column":12},"end":{"line":486,"column":23}},"loc":{"start":{"line":486,"column":33},"end":{"line":491,"column":5}}},"49":{"name":"(anonymous_68)","decl":{"start":{"line":493,"column":12},"end":{"line":493,"column":31}},"loc":{"start":{"line":493,"column":41},"end":{"line":495,"column":5}}},"50":{"name":"(anonymous_69)","decl":{"start":{"line":497,"column":12},"end":{"line":497,"column":30}},"loc":{"start":{"line":497,"column":40},"end":{"line":499,"column":5}}},"51":{"name":"(anonymous_70)","decl":{"start":{"line":501,"column":12},"end":{"line":501,"column":32}},"loc":{"start":{"line":501,"column":42},"end":{"line":504,"column":5}}},"52":{"name":"(anonymous_71)","decl":{"start":{"line":506,"column":12},"end":{"line":506,"column":21}},"loc":{"start":{"line":506,"column":31},"end":{"line":516,"column":5}}},"53":{"name":"(anonymous_72)","decl":{"start":{"line":518,"column":12},"end":{"line":518,"column":21}},"loc":{"start":{"line":518,"column":21},"end":{"line":521,"column":5}}},"54":{"name":"(anonymous_73)","decl":{"start":{"line":523,"column":12},"end":{"line":523,"column":23}},"loc":{"start":{"line":523,"column":32},"end":{"line":526,"column":5}}},"55":{"name":"(anonymous_74)","decl":{"start":{"line":528,"column":14},"end":{"line":528,"column":43}},"loc":{"start":{"line":528,"column":68},"end":{"line":580,"column":5}}},"56":{"name":"(anonymous_75)","decl":{"start":{"line":533,"column":31},"end":{"line":533,"column":38}},"loc":{"start":{"line":533,"column":65},"end":{"line":562,"column":10}}},"57":{"name":"(anonymous_76)","decl":{"start":{"line":533,"column":65},"end":{"line":533,"column":null}},"loc":{"start":{"line":533,"column":65},"end":{"line":562,"column":9}}},"58":{"name":"(anonymous_77)","decl":{"start":{"line":535,"column":37},"end":{"line":535,"column":38}},"loc":{"start":{"line":535,"column":49},"end":{"line":543,"column":13}}},"59":{"name":"(anonymous_78)","decl":{"start":{"line":548,"column":32},"end":{"line":548,"column":33}},"loc":{"start":{"line":548,"column":43},"end":{"line":552,"column":17}}},"60":{"name":"(anonymous_79)","decl":{"start":{"line":564,"column":22},"end":{"line":564,"column":31}},"loc":{"start":{"line":564,"column":33},"end":{"line":573,"column":10}}},"61":{"name":"(anonymous_80)","decl":{"start":{"line":564,"column":33},"end":{"line":564,"column":null}},"loc":{"start":{"line":564,"column":33},"end":{"line":573,"column":9}}},"62":{"name":"(anonymous_81)","decl":{"start":{"line":569,"column":56},"end":{"line":569,"column":59}},"loc":{"start":{"line":569,"column":61},"end":{"line":571,"column":17}}},"63":{"name":"(anonymous_82)","decl":{"start":{"line":582,"column":14},"end":{"line":582,"column":35}},"loc":{"start":{"line":582,"column":60},"end":{"line":661,"column":5}}},"64":{"name":"(anonymous_83)","decl":{"start":{"line":583,"column":31},"end":{"line":583,"column":38}},"loc":{"start":{"line":583,"column":65},"end":{"line":643,"column":10}}},"65":{"name":"(anonymous_84)","decl":{"start":{"line":583,"column":65},"end":{"line":583,"column":null}},"loc":{"start":{"line":583,"column":65},"end":{"line":643,"column":9}}},"66":{"name":"(anonymous_85)","decl":{"start":{"line":586,"column":16},"end":{"line":586,"column":17}},"loc":{"start":{"line":586,"column":29},"end":{"line":586,"column":38}}},"67":{"name":"(anonymous_86)","decl":{"start":{"line":599,"column":45},"end":{"line":599,"column":46}},"loc":{"start":{"line":599,"column":57},"end":{"line":612,"column":21}}},"68":{"name":"(anonymous_87)","decl":{"start":{"line":614,"column":45},"end":{"line":614,"column":46}},"loc":{"start":{"line":614,"column":57},"end":{"line":623,"column":21}}},"69":{"name":"(anonymous_88)","decl":{"start":{"line":626,"column":69},"end":{"line":626,"column":70}},"loc":{"start":{"line":626,"column":76},"end":{"line":626,"column":86}}},"70":{"name":"(anonymous_89)","decl":{"start":{"line":628,"column":45},"end":{"line":628,"column":46}},"loc":{"start":{"line":628,"column":59},"end":{"line":632,"column":22}}},"71":{"name":"(anonymous_90)","decl":{"start":{"line":645,"column":22},"end":{"line":645,"column":31}},"loc":{"start":{"line":645,"column":33},"end":{"line":654,"column":10}}},"72":{"name":"(anonymous_91)","decl":{"start":{"line":645,"column":33},"end":{"line":645,"column":null}},"loc":{"start":{"line":645,"column":33},"end":{"line":654,"column":9}}},"73":{"name":"(anonymous_92)","decl":{"start":{"line":650,"column":56},"end":{"line":650,"column":59}},"loc":{"start":{"line":650,"column":61},"end":{"line":652,"column":17}}},"74":{"name":"(anonymous_93)","decl":{"start":{"line":663,"column":20},"end":{"line":663,"column":34}},"loc":{"start":{"line":663,"column":48},"end":{"line":705,"column":null}}},"75":{"name":"(anonymous_95)","decl":{"start":{"line":672,"column":72},"end":{"line":672,"column":73}},"loc":{"start":{"line":672,"column":84},"end":{"line":672,"column":98}}},"76":{"name":"(anonymous_96)","decl":{"start":{"line":683,"column":30},"end":{"line":683,"column":31}},"loc":{"start":{"line":683,"column":38},"end":{"line":683,"column":86}}},"77":{"name":"(anonymous_97)","decl":{"start":{"line":687,"column":21},"end":{"line":687,"column":22}},"loc":{"start":{"line":687,"column":30},"end":{"line":697,"column":17}}},"78":{"name":"(anonymous_98)","decl":{"start":{"line":698,"column":24},"end":{"line":698,"column":25}},"loc":{"start":{"line":698,"column":31},"end":{"line":698,"column":41}}},"79":{"name":"(anonymous_99)","decl":{"start":{"line":707,"column":20},"end":{"line":707,"column":37}},"loc":{"start":{"line":707,"column":62},"end":{"line":796,"column":null}}},"80":{"name":"(anonymous_101)","decl":{"start":{"line":739,"column":57},"end":{"line":739,"column":58}},"loc":{"start":{"line":739,"column":93},"end":{"line":743,"column":25}}},"81":{"name":"(anonymous_102)","decl":{"start":{"line":798,"column":14},"end":{"line":798,"column":38}},"loc":{"start":{"line":798,"column":63},"end":{"line":800,"column":5}}},"82":{"name":"(anonymous_103)","decl":{"start":{"line":802,"column":14},"end":{"line":802,"column":27}},"loc":{"start":{"line":802,"column":52},"end":{"line":809,"column":5}}},"83":{"name":"(anonymous_104)","decl":{"start":{"line":811,"column":12},"end":{"line":811,"column":26}},"loc":{"start":{"line":811,"column":71},"end":{"line":816,"column":5}}},"84":{"name":"(anonymous_105)","decl":{"start":{"line":818,"column":12},"end":{"line":818,"column":32}},"loc":{"start":{"line":818,"column":57},"end":{"line":827,"column":5}}},"85":{"name":"(anonymous_106)","decl":{"start":{"line":829,"column":18},"end":{"line":829,"column":33}},"loc":{"start":{"line":829,"column":66},"end":{"line":852,"column":null}}},"86":{"name":"(anonymous_108)","decl":{"start":{"line":834,"column":54},"end":{"line":834,"column":55}},"loc":{"start":{"line":834,"column":70},"end":{"line":838,"column":13}}},"87":{"name":"(anonymous_109)","decl":{"start":{"line":854,"column":18},"end":{"line":854,"column":39}},"loc":{"start":{"line":858,"column":17},"end":{"line":881,"column":null}}},"88":{"name":"(anonymous_111)","decl":{"start":{"line":883,"column":18},"end":{"line":883,"column":40}},"loc":{"start":{"line":883,"column":65},"end":{"line":898,"column":null}}},"89":{"name":"(anonymous_113)","decl":{"start":{"line":900,"column":18},"end":{"line":900,"column":40}},"loc":{"start":{"line":904,"column":17},"end":{"line":922,"column":null}}},"90":{"name":"(anonymous_115)","decl":{"start":{"line":924,"column":18},"end":{"line":924,"column":40}},"loc":{"start":{"line":927,"column":17},"end":{"line":970,"column":null}}},"91":{"name":"(anonymous_117)","decl":{"start":{"line":942,"column":44},"end":{"line":942,"column":45}},"loc":{"start":{"line":942,"column":63},"end":{"line":950,"column":25}}},"92":{"name":"(anonymous_118)","decl":{"start":{"line":972,"column":20},"end":{"line":972,"column":36}},"loc":{"start":{"line":972,"column":61},"end":{"line":1097,"column":null}}},"93":{"name":"(anonymous_120)","decl":{"start":{"line":1005,"column":51},"end":{"line":1005,"column":52}},"loc":{"start":{"line":1005,"column":61},"end":{"line":1014,"column":21}}},"94":{"name":"(anonymous_121)","decl":{"start":{"line":1027,"column":33},"end":{"line":1027,"column":36}},"loc":{"start":{"line":1027,"column":38},"end":{"line":1030,"column":21}}},"95":{"name":"(anonymous_122)","decl":{"start":{"line":1032,"column":38},"end":{"line":1032,"column":47}},"loc":{"start":{"line":1032,"column":49},"end":{"line":1079,"column":22}}},"96":{"name":"(anonymous_123)","decl":{"start":{"line":1032,"column":49},"end":{"line":1032,"column":null}},"loc":{"start":{"line":1032,"column":49},"end":{"line":1079,"column":21}}},"97":{"name":"(anonymous_124)","decl":{"start":{"line":1099,"column":20},"end":{"line":1099,"column":35}},"loc":{"start":{"line":1099,"column":60},"end":{"line":1141,"column":null}}},"98":{"name":"(anonymous_126)","decl":{"start":{"line":1129,"column":16},"end":{"line":1129,"column":17}},"loc":{"start":{"line":1129,"column":27},"end":{"line":1135,"column":17}}},"99":{"name":"(anonymous_127)","decl":{"start":{"line":1136,"column":16},"end":{"line":1136,"column":17}},"loc":{"start":{"line":1136,"column":24},"end":{"line":1138,"column":17}}},"100":{"name":"(anonymous_128)","decl":{"start":{"line":1143,"column":20},"end":{"line":1143,"column":38}},"loc":{"start":{"line":1143,"column":63},"end":{"line":1167,"column":null}}},"101":{"name":"(anonymous_130)","decl":{"start":{"line":1169,"column":14},"end":{"line":1169,"column":26}},"loc":{"start":{"line":1169,"column":51},"end":{"line":1178,"column":5}}},"102":{"name":"(anonymous_131)","decl":{"start":{"line":1171,"column":12},"end":{"line":1171,"column":13}},"loc":{"start":{"line":1171,"column":23},"end":{"line":1173,"column":13}}},"103":{"name":"(anonymous_132)","decl":{"start":{"line":1174,"column":12},"end":{"line":1174,"column":13}},"loc":{"start":{"line":1174,"column":20},"end":{"line":1176,"column":13}}},"104":{"name":"(anonymous_133)","decl":{"start":{"line":1180,"column":14},"end":{"line":1180,"column":29}},"loc":{"start":{"line":1180,"column":54},"end":{"line":1190,"column":5}}},"105":{"name":"(anonymous_134)","decl":{"start":{"line":1182,"column":12},"end":{"line":1182,"column":13}},"loc":{"start":{"line":1182,"column":23},"end":{"line":1185,"column":13}}},"106":{"name":"(anonymous_135)","decl":{"start":{"line":1186,"column":12},"end":{"line":1186,"column":13}},"loc":{"start":{"line":1186,"column":20},"end":{"line":1188,"column":13}}},"107":{"name":"(anonymous_136)","decl":{"start":{"line":1192,"column":20},"end":{"line":1192,"column":33}},"loc":{"start":{"line":1192,"column":58},"end":{"line":1214,"column":null}}},"108":{"name":"(anonymous_138)","decl":{"start":{"line":1216,"column":14},"end":{"line":1216,"column":28}},"loc":{"start":{"line":1216,"column":53},"end":{"line":1225,"column":5}}},"109":{"name":"(anonymous_139)","decl":{"start":{"line":1218,"column":12},"end":{"line":1218,"column":13}},"loc":{"start":{"line":1218,"column":23},"end":{"line":1220,"column":13}}},"110":{"name":"(anonymous_140)","decl":{"start":{"line":1221,"column":12},"end":{"line":1221,"column":13}},"loc":{"start":{"line":1221,"column":20},"end":{"line":1223,"column":13}}},"111":{"name":"(anonymous_141)","decl":{"start":{"line":1227,"column":20},"end":{"line":1227,"column":31}},"loc":{"start":{"line":1227,"column":56},"end":{"line":1249,"column":null}}},"112":{"name":"(anonymous_143)","decl":{"start":{"line":1251,"column":12},"end":{"line":1251,"column":27}},"loc":{"start":{"line":1251,"column":40},"end":{"line":1264,"column":5}}},"113":{"name":"(anonymous_144)","decl":{"start":{"line":1258,"column":27},"end":{"line":1258,"column":28}},"loc":{"start":{"line":1258,"column":47},"end":{"line":1263,"column":9}}},"114":{"name":"(anonymous_145)","decl":{"start":{"line":1259,"column":28},"end":{"line":1259,"column":29}},"loc":{"start":{"line":1259,"column":39},"end":{"line":1262,"column":13}}}},"branchMap":{"0":{"loc":{"start":{"line":43,"column":34},"end":{"line":43,"column":60}},"type":"default-arg","locations":[{"start":{"line":43,"column":56},"end":{"line":43,"column":60}}]},"1":{"loc":{"start":{"line":122,"column":8},"end":{"line":124,"column":9}},"type":"if","locations":[{"start":{"line":122,"column":8},"end":{"line":124,"column":9}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":125,"column":8},"end":{"line":127,"column":9}},"type":"if","locations":[{"start":{"line":125,"column":8},"end":{"line":127,"column":9}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":156,"column":24},"end":{"line":162,"column":25}},"type":"if","locations":[{"start":{"line":156,"column":24},"end":{"line":162,"column":25}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":172,"column":8},"end":{"line":238,"column":9}},"type":"switch","locations":[{"start":{"line":173,"column":12},"end":{"line":182,"column":22}},{"start":{"line":184,"column":12},"end":{"line":187,"column":22}},{"start":{"line":189,"column":12},"end":{"line":193,"column":22}},{"start":{"line":195,"column":12},"end":{"line":198,"column":22}},{"start":{"line":200,"column":12},"end":{"line":202,"column":22}},{"start":{"line":204,"column":12},"end":{"line":206,"column":22}},{"start":{"line":208,"column":12},"end":{"line":210,"column":22}},{"start":{"line":212,"column":12},"end":{"line":214,"column":22}},{"start":{"line":216,"column":12},"end":{"line":218,"column":22}},{"start":{"line":220,"column":12},"end":{"line":233,"column":22}},{"start":{"line":235,"column":12},"end":{"line":237,"column":44}}]},"5":{"loc":{"start":{"line":176,"column":16},"end":{"line":180,"column":17}},"type":"if","locations":[{"start":{"line":176,"column":16},"end":{"line":180,"column":17}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":222,"column":22},"end":{"line":222,"column":98}},"type":"cond-expr","locations":[{"start":{"line":222,"column":44},"end":{"line":222,"column":60}},{"start":{"line":222,"column":63},"end":{"line":222,"column":98}}]},"7":{"loc":{"start":{"line":242,"column":8},"end":{"line":282,"column":9}},"type":"if","locations":[{"start":{"line":242,"column":8},"end":{"line":282,"column":9}},{"start":{"line":256,"column":15},"end":{"line":282,"column":9}}]},"8":{"loc":{"start":{"line":256,"column":15},"end":{"line":282,"column":9}},"type":"if","locations":[{"start":{"line":256,"column":15},"end":{"line":282,"column":9}},{"start":{"line":280,"column":15},"end":{"line":282,"column":9}}]},"9":{"loc":{"start":{"line":259,"column":16},"end":{"line":276,"column":17}},"type":"if","locations":[{"start":{"line":259,"column":16},"end":{"line":276,"column":17}},{"start":{"line":269,"column":23},"end":{"line":276,"column":17}}]},"10":{"loc":{"start":{"line":272,"column":24},"end":{"line":272,"column":42}},"type":"binary-expr","locations":[{"start":{"line":272,"column":24},"end":{"line":272,"column":35}},{"start":{"line":272,"column":39},"end":{"line":272,"column":42}}]},"11":{"loc":{"start":{"line":287,"column":8},"end":{"line":289,"column":9}},"type":"if","locations":[{"start":{"line":287,"column":8},"end":{"line":289,"column":9}},{"start":{},"end":{}}]},"12":{"loc":{"start":{"line":290,"column":8},"end":{"line":292,"column":9}},"type":"if","locations":[{"start":{"line":290,"column":8},"end":{"line":292,"column":9}},{"start":{},"end":{}}]},"13":{"loc":{"start":{"line":361,"column":16},"end":{"line":372,"column":17}},"type":"if","locations":[{"start":{"line":361,"column":16},"end":{"line":372,"column":17}},{"start":{"line":370,"column":23},"end":{"line":372,"column":17}}]},"14":{"loc":{"start":{"line":385,"column":16},"end":{"line":395,"column":17}},"type":"if","locations":[{"start":{"line":385,"column":16},"end":{"line":395,"column":17}},{"start":{"line":393,"column":23},"end":{"line":395,"column":17}}]},"15":{"loc":{"start":{"line":388,"column":24},"end":{"line":390,"column":25}},"type":"if","locations":[{"start":{"line":388,"column":24},"end":{"line":390,"column":25}},{"start":{},"end":{}}]},"16":{"loc":{"start":{"line":406,"column":8},"end":{"line":412,"column":9}},"type":"if","locations":[{"start":{"line":406,"column":8},"end":{"line":412,"column":9}},{"start":{},"end":{}}]},"17":{"loc":{"start":{"line":407,"column":12},"end":{"line":411,"column":13}},"type":"if","locations":[{"start":{"line":407,"column":12},"end":{"line":411,"column":13}},{"start":{"line":409,"column":19},"end":{"line":411,"column":13}}]},"18":{"loc":{"start":{"line":417,"column":8},"end":{"line":419,"column":9}},"type":"if","locations":[{"start":{"line":417,"column":8},"end":{"line":419,"column":9}},{"start":{},"end":{}}]},"19":{"loc":{"start":{"line":443,"column":8},"end":{"line":448,"column":9}},"type":"if","locations":[{"start":{"line":443,"column":8},"end":{"line":448,"column":9}},{"start":{"line":445,"column":15},"end":{"line":448,"column":9}}]},"20":{"loc":{"start":{"line":456,"column":8},"end":{"line":458,"column":9}},"type":"if","locations":[{"start":{"line":456,"column":8},"end":{"line":458,"column":9}},{"start":{},"end":{}}]},"21":{"loc":{"start":{"line":459,"column":8},"end":{"line":461,"column":9}},"type":"if","locations":[{"start":{"line":459,"column":8},"end":{"line":461,"column":9}},{"start":{},"end":{}}]},"22":{"loc":{"start":{"line":472,"column":34},"end":{"line":472,"column":82}},"type":"binary-expr","locations":[{"start":{"line":472,"column":34},"end":{"line":472,"column":58}},{"start":{"line":472,"column":62},"end":{"line":472,"column":82}}]},"23":{"loc":{"start":{"line":507,"column":8},"end":{"line":509,"column":9}},"type":"if","locations":[{"start":{"line":507,"column":8},"end":{"line":509,"column":9}},{"start":{},"end":{}}]},"24":{"loc":{"start":{"line":510,"column":8},"end":{"line":515,"column":9}},"type":"if","locations":[{"start":{"line":510,"column":8},"end":{"line":515,"column":9}},{"start":{},"end":{}}]},"25":{"loc":{"start":{"line":529,"column":8},"end":{"line":531,"column":9}},"type":"if","locations":[{"start":{"line":529,"column":8},"end":{"line":531,"column":9}},{"start":{},"end":{}}]},"26":{"loc":{"start":{"line":529,"column":12},"end":{"line":529,"column":57}},"type":"binary-expr","locations":[{"start":{"line":529,"column":12},"end":{"line":529,"column":29}},{"start":{"line":529,"column":33},"end":{"line":529,"column":57}}]},"27":{"loc":{"start":{"line":549,"column":20},"end":{"line":551,"column":21}},"type":"if","locations":[{"start":{"line":549,"column":20},"end":{"line":551,"column":21}},{"start":{},"end":{}}]},"28":{"loc":{"start":{"line":559,"column":12},"end":{"line":561,"column":13}},"type":"if","locations":[{"start":{"line":559,"column":12},"end":{"line":561,"column":13}},{"start":{},"end":{}}]},"29":{"loc":{"start":{"line":565,"column":12},"end":{"line":572,"column":13}},"type":"if","locations":[{"start":{"line":565,"column":12},"end":{"line":572,"column":13}},{"start":{"line":567,"column":19},"end":{"line":572,"column":13}}]},"30":{"loc":{"start":{"line":575,"column":8},"end":{"line":579,"column":9}},"type":"if","locations":[{"start":{"line":575,"column":8},"end":{"line":579,"column":9}},{"start":{"line":577,"column":15},"end":{"line":579,"column":9}}]},"31":{"loc":{"start":{"line":585,"column":41},"end":{"line":585,"column":87}},"type":"binary-expr","locations":[{"start":{"line":585,"column":41},"end":{"line":585,"column":81}},{"start":{"line":585,"column":85},"end":{"line":585,"column":87}}]},"32":{"loc":{"start":{"line":596,"column":16},"end":{"line":624,"column":17}},"type":"if","locations":[{"start":{"line":596,"column":16},"end":{"line":624,"column":17}},{"start":{"line":613,"column":23},"end":{"line":624,"column":17}}]},"33":{"loc":{"start":{"line":600,"column":24},"end":{"line":611,"column":25}},"type":"if","locations":[{"start":{"line":600,"column":24},"end":{"line":611,"column":25}},{"start":{},"end":{}}]},"34":{"loc":{"start":{"line":640,"column":12},"end":{"line":642,"column":13}},"type":"if","locations":[{"start":{"line":640,"column":12},"end":{"line":642,"column":13}},{"start":{},"end":{}}]},"35":{"loc":{"start":{"line":646,"column":12},"end":{"line":653,"column":13}},"type":"if","locations":[{"start":{"line":646,"column":12},"end":{"line":653,"column":13}},{"start":{"line":648,"column":19},"end":{"line":653,"column":13}}]},"36":{"loc":{"start":{"line":656,"column":8},"end":{"line":660,"column":9}},"type":"if","locations":[{"start":{"line":656,"column":8},"end":{"line":660,"column":9}},{"start":{"line":658,"column":15},"end":{"line":660,"column":9}}]},"37":{"loc":{"start":{"line":664,"column":8},"end":{"line":668,"column":9}},"type":"if","locations":[{"start":{"line":664,"column":8},"end":{"line":668,"column":9}},{"start":{},"end":{}}]},"38":{"loc":{"start":{"line":675,"column":12},"end":{"line":680,"column":13}},"type":"if","locations":[{"start":{"line":675,"column":12},"end":{"line":680,"column":13}},{"start":{"line":677,"column":19},"end":{"line":680,"column":13}}]},"39":{"loc":{"start":{"line":689,"column":20},"end":{"line":695,"column":21}},"type":"if","locations":[{"start":{"line":689,"column":20},"end":{"line":695,"column":21}},{"start":{},"end":{}}]},"40":{"loc":{"start":{"line":694,"column":46},"end":{"line":694,"column":65}},"type":"binary-expr","locations":[{"start":{"line":694,"column":46},"end":{"line":694,"column":53}},{"start":{"line":694,"column":57},"end":{"line":694,"column":65}}]},"41":{"loc":{"start":{"line":715,"column":37},"end":{"line":715,"column":71}},"type":"binary-expr","locations":[{"start":{"line":715,"column":37},"end":{"line":715,"column":58}},{"start":{"line":715,"column":62},"end":{"line":715,"column":71}}]},"42":{"loc":{"start":{"line":717,"column":16},"end":{"line":719,"column":17}},"type":"if","locations":[{"start":{"line":717,"column":16},"end":{"line":719,"column":17}},{"start":{},"end":{}}]},"43":{"loc":{"start":{"line":721,"column":16},"end":{"line":730,"column":17}},"type":"if","locations":[{"start":{"line":721,"column":16},"end":{"line":730,"column":17}},{"start":{},"end":{}}]},"44":{"loc":{"start":{"line":722,"column":20},"end":{"line":724,"column":70}},"type":"binary-expr","locations":[{"start":{"line":722,"column":20},"end":{"line":722,"column":35}},{"start":{"line":723,"column":20},"end":{"line":723,"column":41}},{"start":{"line":724,"column":20},"end":{"line":724,"column":70}}]},"45":{"loc":{"start":{"line":727,"column":20},"end":{"line":729,"column":21}},"type":"if","locations":[{"start":{"line":727,"column":20},"end":{"line":729,"column":21}},{"start":{},"end":{}}]},"46":{"loc":{"start":{"line":727,"column":24},"end":{"line":727,"column":97}},"type":"binary-expr","locations":[{"start":{"line":727,"column":24},"end":{"line":727,"column":28}},{"start":{"line":727,"column":32},"end":{"line":727,"column":97}}]},"47":{"loc":{"start":{"line":733,"column":20},"end":{"line":777,"column":21}},"type":"if","locations":[{"start":{"line":733,"column":20},"end":{"line":777,"column":21}},{"start":{"line":767,"column":27},"end":{"line":777,"column":21}}]},"48":{"loc":{"start":{"line":740,"column":28},"end":{"line":742,"column":29}},"type":"if","locations":[{"start":{"line":740,"column":28},"end":{"line":742,"column":29}},{"start":{},"end":{}}]},"49":{"loc":{"start":{"line":745,"column":24},"end":{"line":766,"column":25}},"type":"if","locations":[{"start":{"line":745,"column":24},"end":{"line":766,"column":25}},{"start":{"line":756,"column":31},"end":{"line":766,"column":25}}]},"50":{"loc":{"start":{"line":812,"column":8},"end":{"line":814,"column":9}},"type":"if","locations":[{"start":{"line":812,"column":8},"end":{"line":814,"column":9}},{"start":{},"end":{}}]},"51":{"loc":{"start":{"line":820,"column":8},"end":{"line":825,"column":9}},"type":"if","locations":[{"start":{"line":820,"column":8},"end":{"line":825,"column":9}},{"start":{"line":822,"column":15},"end":{"line":825,"column":9}}]},"52":{"loc":{"start":{"line":826,"column":15},"end":{"line":826,"column":45}},"type":"cond-expr","locations":[{"start":{"line":826,"column":39},"end":{"line":826,"column":41}},{"start":{"line":826,"column":44},"end":{"line":826,"column":45}}]},"53":{"loc":{"start":{"line":842,"column":12},"end":{"line":844,"column":13}},"type":"if","locations":[{"start":{"line":842,"column":12},"end":{"line":844,"column":13}},{"start":{},"end":{}}]},"54":{"loc":{"start":{"line":842,"column":18},"end":{"line":842,"column":87}},"type":"binary-expr","locations":[{"start":{"line":842,"column":18},"end":{"line":842,"column":40}},{"start":{"line":842,"column":44},"end":{"line":842,"column":87}}]},"55":{"loc":{"start":{"line":940,"column":16},"end":{"line":963,"column":17}},"type":"if","locations":[{"start":{"line":940,"column":16},"end":{"line":963,"column":17}},{"start":{"line":961,"column":23},"end":{"line":963,"column":17}}]},"56":{"loc":{"start":{"line":941,"column":20},"end":{"line":958,"column":21}},"type":"if","locations":[{"start":{"line":941,"column":20},"end":{"line":958,"column":21}},{"start":{},"end":{}}]},"57":{"loc":{"start":{"line":943,"column":28},"end":{"line":948,"column":29}},"type":"if","locations":[{"start":{"line":943,"column":28},"end":{"line":948,"column":29}},{"start":{},"end":{}}]},"58":{"loc":{"start":{"line":944,"column":32},"end":{"line":946,"column":33}},"type":"if","locations":[{"start":{"line":944,"column":32},"end":{"line":946,"column":33}},{"start":{},"end":{}}]},"59":{"loc":{"start":{"line":975,"column":8},"end":{"line":977,"column":9}},"type":"if","locations":[{"start":{"line":975,"column":8},"end":{"line":977,"column":9}},{"start":{},"end":{}}]},"60":{"loc":{"start":{"line":979,"column":8},"end":{"line":983,"column":9}},"type":"if","locations":[{"start":{"line":979,"column":8},"end":{"line":983,"column":9}},{"start":{},"end":{}}]},"61":{"loc":{"start":{"line":979,"column":12},"end":{"line":979,"column":92}},"type":"binary-expr","locations":[{"start":{"line":979,"column":12},"end":{"line":979,"column":42}},{"start":{"line":979,"column":46},"end":{"line":979,"column":92}}]},"62":{"loc":{"start":{"line":985,"column":8},"end":{"line":992,"column":9}},"type":"if","locations":[{"start":{"line":985,"column":8},"end":{"line":992,"column":9}},{"start":{},"end":{}}]},"63":{"loc":{"start":{"line":986,"column":12},"end":{"line":987,"column":57}},"type":"binary-expr","locations":[{"start":{"line":986,"column":12},"end":{"line":986,"column":59}},{"start":{"line":987,"column":12},"end":{"line":987,"column":57}}]},"64":{"loc":{"start":{"line":996,"column":8},"end":{"line":998,"column":9}},"type":"if","locations":[{"start":{"line":996,"column":8},"end":{"line":998,"column":9}},{"start":{},"end":{}}]},"65":{"loc":{"start":{"line":1000,"column":8},"end":{"line":1096,"column":9}},"type":"if","locations":[{"start":{"line":1000,"column":8},"end":{"line":1096,"column":9}},{"start":{"line":1093,"column":15},"end":{"line":1096,"column":9}}]},"66":{"loc":{"start":{"line":1001,"column":12},"end":{"line":1092,"column":13}},"type":"if","locations":[{"start":{"line":1001,"column":12},"end":{"line":1092,"column":13}},{"start":{"line":1020,"column":19},"end":{"line":1092,"column":13}}]},"67":{"loc":{"start":{"line":1008,"column":24},"end":{"line":1012,"column":25}},"type":"if","locations":[{"start":{"line":1008,"column":24},"end":{"line":1012,"column":25}},{"start":{"line":1010,"column":31},"end":{"line":1012,"column":25}}]},"68":{"loc":{"start":{"line":1009,"column":47},"end":{"line":1009,"column":75}},"type":"binary-expr","locations":[{"start":{"line":1009,"column":47},"end":{"line":1009,"column":61}},{"start":{"line":1009,"column":65},"end":{"line":1009,"column":75}}]},"69":{"loc":{"start":{"line":1011,"column":47},"end":{"line":1011,"column":75}},"type":"binary-expr","locations":[{"start":{"line":1011,"column":47},"end":{"line":1011,"column":61}},{"start":{"line":1011,"column":65},"end":{"line":1011,"column":75}}]},"70":{"loc":{"start":{"line":1020,"column":19},"end":{"line":1092,"column":13}},"type":"if","locations":[{"start":{"line":1020,"column":19},"end":{"line":1092,"column":13}},{"start":{"line":1089,"column":19},"end":{"line":1092,"column":13}}]},"71":{"loc":{"start":{"line":1022,"column":16},"end":{"line":1088,"column":17}},"type":"if","locations":[{"start":{"line":1022,"column":16},"end":{"line":1088,"column":17}},{"start":{"line":1082,"column":23},"end":{"line":1088,"column":17}}]},"72":{"loc":{"start":{"line":1044,"column":28},"end":{"line":1075,"column":29}},"type":"if","locations":[{"start":{"line":1044,"column":28},"end":{"line":1075,"column":29}},{"start":{"line":1073,"column":35},"end":{"line":1075,"column":29}}]},"73":{"loc":{"start":{"line":1045,"column":32},"end":{"line":1072,"column":33}},"type":"if","locations":[{"start":{"line":1045,"column":32},"end":{"line":1072,"column":33}},{"start":{"line":1065,"column":39},"end":{"line":1072,"column":33}}]},"74":{"loc":{"start":{"line":1046,"column":36},"end":{"line":1058,"column":37}},"type":"if","locations":[{"start":{"line":1046,"column":36},"end":{"line":1058,"column":37}},{"start":{"line":1051,"column":43},"end":{"line":1058,"column":37}}]},"75":{"loc":{"start":{"line":1047,"column":40},"end":{"line":1049,"column":41}},"type":"if","locations":[{"start":{"line":1047,"column":40},"end":{"line":1049,"column":41}},{"start":{},"end":{}}]},"76":{"loc":{"start":{"line":1051,"column":43},"end":{"line":1058,"column":37}},"type":"if","locations":[{"start":{"line":1051,"column":43},"end":{"line":1058,"column":37}},{"start":{},"end":{}}]},"77":{"loc":{"start":{"line":1100,"column":8},"end":{"line":1140,"column":9}},"type":"if","locations":[{"start":{"line":1100,"column":8},"end":{"line":1140,"column":9}},{"start":{"line":1116,"column":15},"end":{"line":1140,"column":9}}]},"78":{"loc":{"start":{"line":1116,"column":15},"end":{"line":1140,"column":9}},"type":"if","locations":[{"start":{"line":1116,"column":15},"end":{"line":1140,"column":9}},{"start":{"line":1127,"column":15},"end":{"line":1140,"column":9}}]},"79":{"loc":{"start":{"line":1131,"column":24},"end":{"line":1133,"column":87}},"type":"cond-expr","locations":[{"start":{"line":1132,"column":30},"end":{"line":1132,"column":67}},{"start":{"line":1133,"column":30},"end":{"line":1133,"column":87}}]},"80":{"loc":{"start":{"line":1148,"column":12},"end":{"line":1159,"column":13}},"type":"if","locations":[{"start":{"line":1148,"column":12},"end":{"line":1159,"column":13}},{"start":{"line":1150,"column":19},"end":{"line":1159,"column":13}}]},"81":{"loc":{"start":{"line":1150,"column":19},"end":{"line":1159,"column":13}},"type":"if","locations":[{"start":{"line":1150,"column":19},"end":{"line":1159,"column":13}},{"start":{"line":1152,"column":19},"end":{"line":1159,"column":13}}]},"82":{"loc":{"start":{"line":1152,"column":19},"end":{"line":1159,"column":13}},"type":"if","locations":[{"start":{"line":1152,"column":19},"end":{"line":1159,"column":13}},{"start":{"line":1154,"column":19},"end":{"line":1159,"column":13}}]},"83":{"loc":{"start":{"line":1152,"column":23},"end":{"line":1152,"column":103}},"type":"binary-expr","locations":[{"start":{"line":1152,"column":23},"end":{"line":1152,"column":53}},{"start":{"line":1152,"column":57},"end":{"line":1152,"column":103}}]},"84":{"loc":{"start":{"line":1154,"column":19},"end":{"line":1159,"column":13}},"type":"if","locations":[{"start":{"line":1154,"column":19},"end":{"line":1159,"column":13}},{"start":{},"end":{}}]},"85":{"loc":{"start":{"line":1155,"column":16},"end":{"line":1156,"column":61}},"type":"binary-expr","locations":[{"start":{"line":1155,"column":16},"end":{"line":1155,"column":63}},{"start":{"line":1156,"column":16},"end":{"line":1156,"column":61}}]},"86":{"loc":{"start":{"line":1195,"column":12},"end":{"line":1208,"column":13}},"type":"if","locations":[{"start":{"line":1195,"column":12},"end":{"line":1208,"column":13}},{"start":{},"end":{}}]},"87":{"loc":{"start":{"line":1199,"column":16},"end":{"line":1207,"column":17}},"type":"if","locations":[{"start":{"line":1199,"column":16},"end":{"line":1207,"column":17}},{"start":{},"end":{}}]},"88":{"loc":{"start":{"line":1200,"column":20},"end":{"line":1201,"column":70}},"type":"binary-expr","locations":[{"start":{"line":1200,"column":20},"end":{"line":1200,"column":41}},{"start":{"line":1201,"column":20},"end":{"line":1201,"column":70}}]},"89":{"loc":{"start":{"line":1204,"column":20},"end":{"line":1206,"column":21}},"type":"if","locations":[{"start":{"line":1204,"column":20},"end":{"line":1206,"column":21}},{"start":{},"end":{}}]},"90":{"loc":{"start":{"line":1230,"column":12},"end":{"line":1243,"column":13}},"type":"if","locations":[{"start":{"line":1230,"column":12},"end":{"line":1243,"column":13}},{"start":{},"end":{}}]},"91":{"loc":{"start":{"line":1234,"column":16},"end":{"line":1242,"column":17}},"type":"if","locations":[{"start":{"line":1234,"column":16},"end":{"line":1242,"column":17}},{"start":{},"end":{}}]},"92":{"loc":{"start":{"line":1235,"column":20},"end":{"line":1236,"column":70}},"type":"binary-expr","locations":[{"start":{"line":1235,"column":20},"end":{"line":1235,"column":41}},{"start":{"line":1236,"column":20},"end":{"line":1236,"column":70}}]},"93":{"loc":{"start":{"line":1239,"column":20},"end":{"line":1241,"column":21}},"type":"if","locations":[{"start":{"line":1239,"column":20},"end":{"line":1241,"column":21}},{"start":{},"end":{}}]},"94":{"loc":{"start":{"line":1252,"column":8},"end":{"line":1254,"column":9}},"type":"if","locations":[{"start":{"line":1252,"column":8},"end":{"line":1254,"column":9}},{"start":{},"end":{}}]},"95":{"loc":{"start":{"line":1255,"column":8},"end":{"line":1257,"column":9}},"type":"if","locations":[{"start":{"line":1255,"column":8},"end":{"line":1257,"column":9}},{"start":{},"end":{}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":0,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":0,"375":0,"376":0,"377":0,"378":0,"379":0,"380":0,"381":0,"382":0,"383":0,"384":0,"385":0,"386":0,"387":0,"388":0,"389":0,"390":0,"391":0,"392":0,"393":0,"394":0,"395":0,"396":0,"397":0,"398":0,"399":0,"400":0,"401":0,"402":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"411":0,"412":0,"413":0,"414":0,"415":0,"416":0,"417":0,"418":0,"419":0,"420":0,"421":0,"422":0,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"430":0,"431":0,"432":0,"433":0,"434":0,"435":0,"436":0,"437":0,"438":0,"439":0,"440":0,"441":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"471":0,"472":0,"473":0,"474":0,"475":0,"476":0,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0,"483":0,"484":0,"485":0,"486":0,"487":0,"488":0,"489":0,"490":0,"491":0,"492":0,"493":0,"494":0,"495":0,"496":0,"497":0,"498":0,"499":0,"500":0,"501":0,"502":0,"503":0,"504":0,"505":0,"506":0,"507":0,"508":0,"509":0,"510":0,"511":0,"512":0,"513":0,"514":0,"515":0,"516":0,"517":0,"518":0,"519":0,"520":0,"521":0,"522":0,"523":0,"524":0,"525":0,"526":0,"527":0,"528":0,"529":0,"530":0,"531":0,"532":0,"533":0,"534":0,"535":0,"536":0,"537":0,"538":0,"539":0,"540":0,"541":0,"542":0,"543":0,"544":0,"545":0,"546":0,"547":0,"548":0,"549":0,"550":0,"551":0,"552":0,"553":0,"554":0,"555":0,"556":0,"557":0,"558":0,"559":0,"560":0,"561":0,"562":0,"563":0,"564":0,"565":0,"566":0,"567":0,"568":0,"569":0,"570":0,"571":0,"572":0,"573":0,"574":0,"575":0,"576":0,"577":0,"578":0,"579":0,"580":0,"581":0,"582":0,"583":0,"584":0,"585":0,"586":0,"587":0,"588":0,"589":0,"590":0,"591":0,"592":0,"593":0,"594":0,"595":0,"596":0,"597":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0},"b":{"0":[0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0,0,0,0,0,0,0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0,0],"63":[0,0],"64":[0,0],"65":[0,0],"66":[0,0],"67":[0,0],"68":[0,0],"69":[0,0],"70":[0,0],"71":[0,0],"72":[0,0],"73":[0,0],"74":[0,0],"75":[0,0],"76":[0,0],"77":[0,0],"78":[0,0],"79":[0,0],"80":[0,0],"81":[0,0],"82":[0,0],"83":[0,0],"84":[0,0],"85":[0,0],"86":[0,0],"87":[0,0],"88":[0,0],"89":[0,0],"90":[0,0],"91":[0,0],"92":[0,0],"93":[0,0],"94":[0,0],"95":[0,0]}} +,"/home/jailuser/git/src/backend/expand_value.ts": {"path":"/home/jailuser/git/src/backend/expand_value.ts","statementMap":{"0":{"start":{"line":12,"column":0},"end":{"line":12,"column":16}},"1":{"start":{"line":34,"column":0},"end":{"line":34,"column":16}},"2":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}},"3":{"start":{"line":3,"column":34},"end":{"line":3,"column":80}},"4":{"start":{"line":4,"column":28},"end":{"line":4,"column":57}},"5":{"start":{"line":5,"column":28},"end":{"line":5,"column":38}},"6":{"start":{"line":6,"column":25},"end":{"line":6,"column":48}},"7":{"start":{"line":7,"column":18},"end":{"line":7,"column":35}},"8":{"start":{"line":8,"column":23},"end":{"line":8,"column":32}},"9":{"start":{"line":9,"column":31},"end":{"line":9,"column":44}},"10":{"start":{"line":10,"column":21},"end":{"line":10,"column":35}},"11":{"start":{"line":13,"column":4},"end":{"line":13,"column":25}},"12":{"start":{"line":14,"column":4},"end":{"line":16,"column":5}},"13":{"start":{"line":15,"column":8},"end":{"line":15,"column":17}},"14":{"start":{"line":17,"column":4},"end":{"line":19,"column":5}},"15":{"start":{"line":18,"column":8},"end":{"line":18,"column":17}},"16":{"start":{"line":20,"column":4},"end":{"line":22,"column":5}},"17":{"start":{"line":21,"column":8},"end":{"line":21,"column":17}},"18":{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},"19":{"start":{"line":24,"column":8},"end":{"line":24,"column":17}},"20":{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},"21":{"start":{"line":27,"column":8},"end":{"line":27,"column":17}},"22":{"start":{"line":30,"column":4},"end":{"line":30,"column":137}},"23":{"start":{"line":31,"column":4},"end":{"line":31,"column":13}},"24":{"start":{"line":40,"column":30},"end":{"line":67,"column":5}},"25":{"start":{"line":41,"column":8},"end":{"line":41,"column":29}},"26":{"start":{"line":42,"column":8},"end":{"line":44,"column":9}},"27":{"start":{"line":43,"column":12},"end":{"line":43,"column":22}},"28":{"start":{"line":46,"column":18},"end":{"line":46,"column":19}},"29":{"start":{"line":47,"column":23},"end":{"line":47,"column":27}},"30":{"start":{"line":48,"column":22},"end":{"line":48,"column":30}},"31":{"start":{"line":49,"column":24},"end":{"line":49,"column":39}},"32":{"start":{"line":50,"column":22},"end":{"line":50,"column":27}},"33":{"start":{"line":52,"column":8},"end":{"line":62,"column":9}},"34":{"start":{"line":53,"column":12},"end":{"line":59,"column":13}},"35":{"start":{"line":54,"column":16},"end":{"line":54,"column":32}},"36":{"start":{"line":55,"column":19},"end":{"line":59,"column":13}},"37":{"start":{"line":56,"column":16},"end":{"line":56,"column":31}},"38":{"start":{"line":57,"column":19},"end":{"line":59,"column":13}},"39":{"start":{"line":58,"column":16},"end":{"line":58,"column":33}},"40":{"start":{"line":60,"column":12},"end":{"line":60,"column":44}},"41":{"start":{"line":61,"column":12},"end":{"line":61,"column":18}},"42":{"start":{"line":64,"column":23},"end":{"line":64,"column":50}},"43":{"start":{"line":65,"column":8},"end":{"line":65,"column":41}},"44":{"start":{"line":66,"column":8},"end":{"line":66,"column":22}},"45":{"start":{"line":69,"column":18},"end":{"line":69,"column":24}},"46":{"start":{"line":70,"column":31},"end":{"line":70,"column":33}},"47":{"start":{"line":72,"column":32},"end":{"line":94,"column":5}},"48":{"start":{"line":73,"column":23},"end":{"line":73,"column":25}},"49":{"start":{"line":74,"column":26},"end":{"line":74,"column":28}},"50":{"start":{"line":75,"column":8},"end":{"line":75,"column":25}},"51":{"start":{"line":76,"column":8},"end":{"line":91,"column":11}},"52":{"start":{"line":77,"column":12},"end":{"line":77,"column":29}},"53":{"start":{"line":78,"column":12},"end":{"line":90,"column":13}},"54":{"start":{"line":80,"column":19},"end":{"line":90,"column":13}},"55":{"start":{"line":81,"column":16},"end":{"line":81,"column":33}},"56":{"start":{"line":82,"column":19},"end":{"line":90,"column":13}},"57":{"start":{"line":83,"column":16},"end":{"line":86,"column":17}},"58":{"start":{"line":84,"column":20},"end":{"line":84,"column":39}},"59":{"start":{"line":85,"column":20},"end":{"line":85,"column":42}},"60":{"start":{"line":87,"column":16},"end":{"line":87,"column":49}},"61":{"start":{"line":89,"column":16},"end":{"line":89,"column":32}},"62":{"start":{"line":92,"column":8},"end":{"line":92,"column":20}},"63":{"start":{"line":93,"column":8},"end":{"line":93,"column":38}},"64":{"start":{"line":102,"column":4},"end":{"line":216,"column":6}},"65":{"start":{"line":103,"column":8},"end":{"line":103,"column":29}},"66":{"start":{"line":105,"column":8},"end":{"line":107,"column":9}},"67":{"start":{"line":106,"column":12},"end":{"line":106,"column":39}},"68":{"start":{"line":109,"column":8},"end":{"line":174,"column":9}},"69":{"start":{"line":111,"column":12},"end":{"line":173,"column":17}},"70":{"start":{"line":112,"column":16},"end":{"line":112,"column":37}},"71":{"start":{"line":113,"column":16},"end":{"line":115,"column":17}},"72":{"start":{"line":114,"column":20},"end":{"line":114,"column":27}},"73":{"start":{"line":116,"column":16},"end":{"line":116,"column":47}},"74":{"start":{"line":117,"column":16},"end":{"line":120,"column":17}},"75":{"start":{"line":118,"column":20},"end":{"line":118,"column":51}},"76":{"start":{"line":119,"column":20},"end":{"line":119,"column":30}},"77":{"start":{"line":121,"column":16},"end":{"line":127,"column":17}},"78":{"start":{"line":122,"column":20},"end":{"line":122,"column":51}},"79":{"start":{"line":123,"column":20},"end":{"line":126,"column":21}},"80":{"start":{"line":124,"column":24},"end":{"line":124,"column":55}},"81":{"start":{"line":125,"column":24},"end":{"line":125,"column":39}},"82":{"start":{"line":130,"column":34},"end":{"line":130,"column":52}},"83":{"start":{"line":131,"column":33},"end":{"line":131,"column":51}},"84":{"start":{"line":132,"column":33},"end":{"line":132,"column":51}},"85":{"start":{"line":134,"column":31},"end":{"line":134,"column":39}},"86":{"start":{"line":135,"column":16},"end":{"line":137,"column":17}},"87":{"start":{"line":136,"column":20},"end":{"line":136,"column":40}},"88":{"start":{"line":139,"column":16},"end":{"line":160,"column":17}},"89":{"start":{"line":141,"column":39},"end":{"line":141,"column":41}},"90":{"start":{"line":142,"column":20},"end":{"line":142,"column":38}},"91":{"start":{"line":143,"column":30},"end":{"line":143,"column":42}},"92":{"start":{"line":144,"column":20},"end":{"line":144,"column":32}},"93":{"start":{"line":145,"column":20},"end":{"line":145,"column":55}},"94":{"start":{"line":147,"column":32},"end":{"line":147,"column":33}},"95":{"start":{"line":148,"column":20},"end":{"line":157,"column":21}},"96":{"start":{"line":149,"column":24},"end":{"line":149,"column":58}},"97":{"start":{"line":150,"column":24},"end":{"line":150,"column":48}},"98":{"start":{"line":151,"column":24},"end":{"line":154,"column":25}},"99":{"start":{"line":152,"column":28},"end":{"line":152,"column":40}},"100":{"start":{"line":153,"column":28},"end":{"line":153,"column":34}},"101":{"start":{"line":155,"column":24},"end":{"line":155,"column":36}},"102":{"start":{"line":156,"column":24},"end":{"line":156,"column":71}},"103":{"start":{"line":158,"column":20},"end":{"line":158,"column":51}},"104":{"start":{"line":159,"column":20},"end":{"line":159,"column":31}},"105":{"start":{"line":163,"column":28},"end":{"line":163,"column":49}},"106":{"start":{"line":164,"column":16},"end":{"line":172,"column":17}},"107":{"start":{"line":165,"column":39},"end":{"line":165,"column":41}},"108":{"start":{"line":166,"column":20},"end":{"line":166,"column":36}},"109":{"start":{"line":167,"column":20},"end":{"line":169,"column":21}},"110":{"start":{"line":168,"column":24},"end":{"line":168,"column":40}},"111":{"start":{"line":170,"column":20},"end":{"line":170,"column":51}},"112":{"start":{"line":171,"column":20},"end":{"line":171,"column":31}},"113":{"start":{"line":177,"column":8},"end":{"line":215,"column":13}},"114":{"start":{"line":178,"column":12},"end":{"line":178,"column":33}},"115":{"start":{"line":182,"column":12},"end":{"line":212,"column":13}},"116":{"start":{"line":183,"column":16},"end":{"line":183,"column":35}},"117":{"start":{"line":184,"column":19},"end":{"line":212,"column":13}},"118":{"start":{"line":185,"column":16},"end":{"line":185,"column":32}},"119":{"start":{"line":186,"column":16},"end":{"line":186,"column":47}},"120":{"start":{"line":187,"column":19},"end":{"line":212,"column":13}},"121":{"start":{"line":188,"column":16},"end":{"line":188,"column":33}},"122":{"start":{"line":189,"column":16},"end":{"line":189,"column":47}},"123":{"start":{"line":190,"column":19},"end":{"line":212,"column":13}},"124":{"start":{"line":191,"column":16},"end":{"line":191,"column":37}},"125":{"start":{"line":192,"column":16},"end":{"line":192,"column":61}},"126":{"start":{"line":193,"column":19},"end":{"line":212,"column":13}},"127":{"start":{"line":194,"column":16},"end":{"line":194,"column":61}},"128":{"start":{"line":195,"column":16},"end":{"line":195,"column":45}},"129":{"start":{"line":196,"column":19},"end":{"line":212,"column":13}},"130":{"start":{"line":197,"column":16},"end":{"line":197,"column":40}},"131":{"start":{"line":198,"column":16},"end":{"line":198,"column":61}},"132":{"start":{"line":199,"column":19},"end":{"line":212,"column":13}},"133":{"start":{"line":200,"column":16},"end":{"line":200,"column":34}},"134":{"start":{"line":201,"column":16},"end":{"line":201,"column":58}},"135":{"start":{"line":202,"column":16},"end":{"line":202,"column":52}},"136":{"start":{"line":203,"column":19},"end":{"line":212,"column":13}},"137":{"start":{"line":208,"column":16},"end":{"line":208,"column":34}},"138":{"start":{"line":209,"column":16},"end":{"line":209,"column":61}},"139":{"start":{"line":211,"column":16},"end":{"line":211,"column":31}},"140":{"start":{"line":214,"column":12},"end":{"line":214,"column":26}},"141":{"start":{"line":218,"column":4},"end":{"line":234,"column":6}},"142":{"start":{"line":219,"column":8},"end":{"line":219,"column":29}},"143":{"start":{"line":220,"column":22},"end":{"line":220,"column":59}},"144":{"start":{"line":221,"column":8},"end":{"line":223,"column":9}},"145":{"start":{"line":222,"column":12},"end":{"line":222,"column":19}},"146":{"start":{"line":224,"column":8},"end":{"line":224,"column":53}},"147":{"start":{"line":225,"column":22},"end":{"line":225,"column":53}},"148":{"start":{"line":226,"column":8},"end":{"line":228,"column":9}},"149":{"start":{"line":227,"column":12},"end":{"line":227,"column":45}},"150":{"start":{"line":229,"column":20},"end":{"line":229,"column":32}},"151":{"start":{"line":230,"column":8},"end":{"line":232,"column":9}},"152":{"start":{"line":231,"column":12},"end":{"line":231,"column":24}},"153":{"start":{"line":233,"column":8},"end":{"line":233,"column":39}},"154":{"start":{"line":236,"column":4},"end":{"line":264,"column":6}},"155":{"start":{"line":237,"column":33},"end":{"line":237,"column":34}},"156":{"start":{"line":239,"column":8},"end":{"line":242,"column":9}},"157":{"start":{"line":240,"column":12},"end":{"line":240,"column":62}},"158":{"start":{"line":241,"column":12},"end":{"line":241,"column":27}},"159":{"start":{"line":244,"column":8},"end":{"line":252,"column":9}},"160":{"start":{"line":245,"column":12},"end":{"line":251,"column":13}},"161":{"start":{"line":246,"column":16},"end":{"line":246,"column":110}},"162":{"start":{"line":247,"column":16},"end":{"line":247,"column":31}},"163":{"start":{"line":249,"column":16},"end":{"line":249,"column":94}},"164":{"start":{"line":250,"column":16},"end":{"line":250,"column":38}},"165":{"start":{"line":254,"column":8},"end":{"line":257,"column":9}},"166":{"start":{"line":255,"column":12},"end":{"line":255,"column":84}},"167":{"start":{"line":256,"column":12},"end":{"line":256,"column":24}},"168":{"start":{"line":259,"column":8},"end":{"line":263,"column":10}},"169":{"start":{"line":266,"column":4},"end":{"line":272,"column":6}},"170":{"start":{"line":267,"column":8},"end":{"line":267,"column":29}},"171":{"start":{"line":268,"column":8},"end":{"line":271,"column":9}},"172":{"start":{"line":269,"column":12},"end":{"line":269,"column":43}},"173":{"start":{"line":270,"column":12},"end":{"line":270,"column":32}},"174":{"start":{"line":274,"column":4},"end":{"line":280,"column":6}},"175":{"start":{"line":275,"column":8},"end":{"line":275,"column":29}},"176":{"start":{"line":276,"column":8},"end":{"line":279,"column":9}},"177":{"start":{"line":277,"column":12},"end":{"line":277,"column":43}},"178":{"start":{"line":278,"column":12},"end":{"line":278,"column":48}},"179":{"start":{"line":282,"column":4},"end":{"line":282,"column":25}},"180":{"start":{"line":283,"column":4},"end":{"line":283,"column":24}}},"fnMap":{"0":{"name":"isExpandable","decl":{"start":{"line":12,"column":16},"end":{"line":12,"column":28}},"loc":{"start":{"line":12,"column":42},"end":{"line":32,"column":1}}},"1":{"name":"expandValue","decl":{"start":{"line":34,"column":16},"end":{"line":34,"column":27}},"loc":{"start":{"line":38,"column":15},"end":{"line":284,"column":1}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":40,"column":30},"end":{"line":40,"column":41}},"loc":{"start":{"line":40,"column":43},"end":{"line":67,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":72,"column":32},"end":{"line":72,"column":33}},"loc":{"start":{"line":72,"column":57},"end":{"line":94,"column":5}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":76,"column":22},"end":{"line":76,"column":23}},"loc":{"start":{"line":76,"column":31},"end":{"line":91,"column":9}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":102,"column":17},"end":{"line":102,"column":25}},"loc":{"start":{"line":102,"column":27},"end":{"line":216,"column":5}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":111,"column":20},"end":{"line":111,"column":23}},"loc":{"start":{"line":111,"column":25},"end":{"line":173,"column":13}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":177,"column":16},"end":{"line":177,"column":19}},"loc":{"start":{"line":177,"column":21},"end":{"line":215,"column":9}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":218,"column":22},"end":{"line":218,"column":23}},"loc":{"start":{"line":218,"column":60},"end":{"line":234,"column":5}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":236,"column":19},"end":{"line":236,"column":20}},"loc":{"start":{"line":236,"column":51},"end":{"line":264,"column":5}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":266,"column":22},"end":{"line":266,"column":30}},"loc":{"start":{"line":266,"column":32},"end":{"line":272,"column":5}}},"11":{"name":"(anonymous_11)","decl":{"start":{"line":274,"column":27},"end":{"line":274,"column":28}},"loc":{"start":{"line":274,"column":65},"end":{"line":280,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":4},"end":{"line":16,"column":5}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":16,"column":5}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":5}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":19,"column":5}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":20,"column":4},"end":{"line":22,"column":5}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":22,"column":5}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":23,"column":8},"end":{"line":23,"column":123}},"type":"binary-expr","locations":[{"start":{"line":23,"column":8},"end":{"line":23,"column":32}},{"start":{"line":23,"column":36},"end":{"line":23,"column":61}},{"start":{"line":23,"column":65},"end":{"line":23,"column":91}},{"start":{"line":23,"column":95},"end":{"line":23,"column":123}}]},"5":{"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":30,"column":4},"end":{"line":30,"column":136}},"type":"binary-expr","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":38}},{"start":{"line":30,"column":42},"end":{"line":30,"column":66}},{"start":{"line":30,"column":70},"end":{"line":30,"column":101}},{"start":{"line":30,"column":105},"end":{"line":30,"column":136}}]},"7":{"loc":{"start":{"line":37,"column":4},"end":{"line":37,"column":21}},"type":"default-arg","locations":[{"start":{"line":37,"column":19},"end":{"line":37,"column":21}}]},"8":{"loc":{"start":{"line":42,"column":8},"end":{"line":44,"column":9}},"type":"if","locations":[{"start":{"line":42,"column":8},"end":{"line":44,"column":9}},{"start":{},"end":{}}]},"9":{"loc":{"start":{"line":42,"column":12},"end":{"line":42,"column":48}},"type":"binary-expr","locations":[{"start":{"line":42,"column":12},"end":{"line":42,"column":28}},{"start":{"line":42,"column":32},"end":{"line":42,"column":48}}]},"10":{"loc":{"start":{"line":53,"column":12},"end":{"line":59,"column":13}},"type":"if","locations":[{"start":{"line":53,"column":12},"end":{"line":59,"column":13}},{"start":{"line":55,"column":19},"end":{"line":59,"column":13}}]},"11":{"loc":{"start":{"line":55,"column":19},"end":{"line":59,"column":13}},"type":"if","locations":[{"start":{"line":55,"column":19},"end":{"line":59,"column":13}},{"start":{"line":57,"column":19},"end":{"line":59,"column":13}}]},"12":{"loc":{"start":{"line":57,"column":19},"end":{"line":59,"column":13}},"type":"if","locations":[{"start":{"line":57,"column":19},"end":{"line":59,"column":13}},{"start":{},"end":{}}]},"13":{"loc":{"start":{"line":78,"column":12},"end":{"line":90,"column":13}},"type":"if","locations":[{"start":{"line":78,"column":12},"end":{"line":90,"column":13}},{"start":{"line":80,"column":19},"end":{"line":90,"column":13}}]},"14":{"loc":{"start":{"line":80,"column":19},"end":{"line":90,"column":13}},"type":"if","locations":[{"start":{"line":80,"column":19},"end":{"line":90,"column":13}},{"start":{"line":82,"column":19},"end":{"line":90,"column":13}}]},"15":{"loc":{"start":{"line":82,"column":19},"end":{"line":90,"column":13}},"type":"if","locations":[{"start":{"line":82,"column":19},"end":{"line":90,"column":13}},{"start":{"line":88,"column":19},"end":{"line":90,"column":13}}]},"16":{"loc":{"start":{"line":105,"column":8},"end":{"line":107,"column":9}},"type":"if","locations":[{"start":{"line":105,"column":8},"end":{"line":107,"column":9}},{"start":{},"end":{}}]},"17":{"loc":{"start":{"line":109,"column":8},"end":{"line":174,"column":9}},"type":"if","locations":[{"start":{"line":109,"column":8},"end":{"line":174,"column":9}},{"start":{},"end":{}}]},"18":{"loc":{"start":{"line":113,"column":16},"end":{"line":115,"column":17}},"type":"if","locations":[{"start":{"line":113,"column":16},"end":{"line":115,"column":17}},{"start":{},"end":{}}]},"19":{"loc":{"start":{"line":117,"column":16},"end":{"line":120,"column":17}},"type":"if","locations":[{"start":{"line":117,"column":16},"end":{"line":120,"column":17}},{"start":{},"end":{}}]},"20":{"loc":{"start":{"line":121,"column":16},"end":{"line":127,"column":17}},"type":"if","locations":[{"start":{"line":121,"column":16},"end":{"line":127,"column":17}},{"start":{},"end":{}}]},"21":{"loc":{"start":{"line":123,"column":20},"end":{"line":126,"column":21}},"type":"if","locations":[{"start":{"line":123,"column":20},"end":{"line":126,"column":21}},{"start":{},"end":{}}]},"22":{"loc":{"start":{"line":135,"column":16},"end":{"line":137,"column":17}},"type":"if","locations":[{"start":{"line":135,"column":16},"end":{"line":137,"column":17}},{"start":{},"end":{}}]},"23":{"loc":{"start":{"line":135,"column":20},"end":{"line":135,"column":58}},"type":"binary-expr","locations":[{"start":{"line":135,"column":20},"end":{"line":135,"column":35}},{"start":{"line":135,"column":39},"end":{"line":135,"column":58}}]},"24":{"loc":{"start":{"line":139,"column":16},"end":{"line":160,"column":17}},"type":"if","locations":[{"start":{"line":139,"column":16},"end":{"line":160,"column":17}},{"start":{},"end":{}}]},"25":{"loc":{"start":{"line":139,"column":20},"end":{"line":139,"column":81}},"type":"binary-expr","locations":[{"start":{"line":139,"column":21},"end":{"line":139,"column":36}},{"start":{"line":139,"column":40},"end":{"line":139,"column":60}},{"start":{"line":139,"column":65},"end":{"line":139,"column":81}}]},"26":{"loc":{"start":{"line":151,"column":24},"end":{"line":154,"column":25}},"type":"if","locations":[{"start":{"line":151,"column":24},"end":{"line":154,"column":25}},{"start":{},"end":{}}]},"27":{"loc":{"start":{"line":164,"column":16},"end":{"line":172,"column":17}},"type":"if","locations":[{"start":{"line":164,"column":16},"end":{"line":172,"column":17}},{"start":{},"end":{}}]},"28":{"loc":{"start":{"line":182,"column":12},"end":{"line":212,"column":13}},"type":"if","locations":[{"start":{"line":182,"column":12},"end":{"line":212,"column":13}},{"start":{"line":184,"column":19},"end":{"line":212,"column":13}}]},"29":{"loc":{"start":{"line":184,"column":19},"end":{"line":212,"column":13}},"type":"if","locations":[{"start":{"line":184,"column":19},"end":{"line":212,"column":13}},{"start":{"line":187,"column":19},"end":{"line":212,"column":13}}]},"30":{"loc":{"start":{"line":187,"column":19},"end":{"line":212,"column":13}},"type":"if","locations":[{"start":{"line":187,"column":19},"end":{"line":212,"column":13}},{"start":{"line":190,"column":19},"end":{"line":212,"column":13}}]},"31":{"loc":{"start":{"line":190,"column":19},"end":{"line":212,"column":13}},"type":"if","locations":[{"start":{"line":190,"column":19},"end":{"line":212,"column":13}},{"start":{"line":193,"column":19},"end":{"line":212,"column":13}}]},"32":{"loc":{"start":{"line":193,"column":19},"end":{"line":212,"column":13}},"type":"if","locations":[{"start":{"line":193,"column":19},"end":{"line":212,"column":13}},{"start":{"line":196,"column":19},"end":{"line":212,"column":13}}]},"33":{"loc":{"start":{"line":196,"column":19},"end":{"line":212,"column":13}},"type":"if","locations":[{"start":{"line":196,"column":19},"end":{"line":212,"column":13}},{"start":{"line":199,"column":19},"end":{"line":212,"column":13}}]},"34":{"loc":{"start":{"line":199,"column":19},"end":{"line":212,"column":13}},"type":"if","locations":[{"start":{"line":199,"column":19},"end":{"line":212,"column":13}},{"start":{"line":203,"column":19},"end":{"line":212,"column":13}}]},"35":{"loc":{"start":{"line":203,"column":19},"end":{"line":212,"column":13}},"type":"if","locations":[{"start":{"line":203,"column":19},"end":{"line":212,"column":13}},{"start":{"line":210,"column":19},"end":{"line":212,"column":13}}]},"36":{"loc":{"start":{"line":204,"column":16},"end":{"line":206,"column":57}},"type":"binary-expr","locations":[{"start":{"line":204,"column":17},"end":{"line":204,"column":49}},{"start":{"line":205,"column":17},"end":{"line":205,"column":56}},{"start":{"line":206,"column":17},"end":{"line":206,"column":56}}]},"37":{"loc":{"start":{"line":218,"column":23},"end":{"line":218,"column":51}},"type":"default-arg","locations":[{"start":{"line":218,"column":46},"end":{"line":218,"column":51}}]},"38":{"loc":{"start":{"line":221,"column":8},"end":{"line":223,"column":9}},"type":"if","locations":[{"start":{"line":221,"column":8},"end":{"line":223,"column":9}},{"start":{},"end":{}}]},"39":{"loc":{"start":{"line":226,"column":8},"end":{"line":228,"column":9}},"type":"if","locations":[{"start":{"line":226,"column":8},"end":{"line":228,"column":9}},{"start":{},"end":{}}]},"40":{"loc":{"start":{"line":230,"column":8},"end":{"line":232,"column":9}},"type":"if","locations":[{"start":{"line":230,"column":8},"end":{"line":232,"column":9}},{"start":{},"end":{}}]},"41":{"loc":{"start":{"line":239,"column":8},"end":{"line":242,"column":9}},"type":"if","locations":[{"start":{"line":239,"column":8},"end":{"line":242,"column":9}},{"start":{},"end":{}}]},"42":{"loc":{"start":{"line":244,"column":8},"end":{"line":252,"column":9}},"type":"if","locations":[{"start":{"line":244,"column":8},"end":{"line":252,"column":9}},{"start":{},"end":{}}]},"43":{"loc":{"start":{"line":244,"column":12},"end":{"line":244,"column":60}},"type":"binary-expr","locations":[{"start":{"line":244,"column":12},"end":{"line":244,"column":35}},{"start":{"line":244,"column":39},"end":{"line":244,"column":60}}]},"44":{"loc":{"start":{"line":245,"column":12},"end":{"line":251,"column":13}},"type":"if","locations":[{"start":{"line":245,"column":12},"end":{"line":251,"column":13}},{"start":{"line":248,"column":19},"end":{"line":251,"column":13}}]},"45":{"loc":{"start":{"line":245,"column":16},"end":{"line":245,"column":61}},"type":"binary-expr","locations":[{"start":{"line":245,"column":16},"end":{"line":245,"column":21}},{"start":{"line":245,"column":25},"end":{"line":245,"column":61}}]},"46":{"loc":{"start":{"line":254,"column":8},"end":{"line":257,"column":9}},"type":"if","locations":[{"start":{"line":254,"column":8},"end":{"line":257,"column":9}},{"start":{},"end":{}}]},"47":{"loc":{"start":{"line":254,"column":12},"end":{"line":254,"column":62}},"type":"binary-expr","locations":[{"start":{"line":254,"column":12},"end":{"line":254,"column":35}},{"start":{"line":254,"column":39},"end":{"line":254,"column":62}}]},"48":{"loc":{"start":{"line":268,"column":8},"end":{"line":271,"column":9}},"type":"if","locations":[{"start":{"line":268,"column":8},"end":{"line":271,"column":9}},{"start":{},"end":{}}]},"49":{"loc":{"start":{"line":274,"column":28},"end":{"line":274,"column":56}},"type":"default-arg","locations":[{"start":{"line":274,"column":51},"end":{"line":274,"column":56}}]},"50":{"loc":{"start":{"line":276,"column":8},"end":{"line":279,"column":9}},"type":"if","locations":[{"start":{"line":276,"column":8},"end":{"line":279,"column":9}},{"start":{},"end":{}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0,0],"5":[0,0],"6":[0,0,0,0],"7":[0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0,0],"37":[0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0],"50":[0,0]}} +,"/home/jailuser/git/src/backend/mi_parse.ts": {"path":"/home/jailuser/git/src/backend/mi_parse.ts","statementMap":{"0":{"start":{"line":177,"column":0},"end":{"line":177,"column":16}},"1":{"start":{"line":1,"column":27},"end":{"line":1,"column":38}},"2":{"start":{"line":9,"column":8},"end":{"line":9,"column":27}},"3":{"start":{"line":10,"column":8},"end":{"line":10,"column":47}},"4":{"start":{"line":11,"column":8},"end":{"line":11,"column":43}},"5":{"start":{"line":15,"column":8},"end":{"line":17,"column":9}},"6":{"start":{"line":16,"column":12},"end":{"line":16,"column":29}},"7":{"start":{"line":19,"column":26},"end":{"line":19,"column":60}},"8":{"start":{"line":20,"column":28},"end":{"line":20,"column":48}},"9":{"start":{"line":22,"column":8},"end":{"line":22,"column":27}},"10":{"start":{"line":23,"column":8},"end":{"line":25,"column":9}},"11":{"start":{"line":24,"column":12},"end":{"line":24,"column":29}},"12":{"start":{"line":27,"column":22},"end":{"line":27,"column":31}},"13":{"start":{"line":29,"column":8},"end":{"line":68,"column":23}},"14":{"start":{"line":30,"column":24},"end":{"line":30,"column":44}},"15":{"start":{"line":31,"column":12},"end":{"line":65,"column":13}},"16":{"start":{"line":32,"column":16},"end":{"line":32,"column":52}},"17":{"start":{"line":33,"column":16},"end":{"line":49,"column":17}},"18":{"start":{"line":34,"column":20},"end":{"line":34,"column":37}},"19":{"start":{"line":36,"column":43},"end":{"line":36,"column":45}},"20":{"start":{"line":37,"column":20},"end":{"line":41,"column":21}},"21":{"start":{"line":38,"column":24},"end":{"line":40,"column":25}},"22":{"start":{"line":39,"column":28},"end":{"line":39,"column":50}},"23":{"start":{"line":42,"column":20},"end":{"line":48,"column":21}},"24":{"start":{"line":43,"column":24},"end":{"line":43,"column":42}},"25":{"start":{"line":44,"column":27},"end":{"line":48,"column":21}},"26":{"start":{"line":45,"column":24},"end":{"line":45,"column":45}},"27":{"start":{"line":47,"column":24},"end":{"line":47,"column":41}},"28":{"start":{"line":50,"column":19},"end":{"line":65,"column":13}},"29":{"start":{"line":51,"column":16},"end":{"line":51,"column":36}},"30":{"start":{"line":52,"column":16},"end":{"line":52,"column":38}},"31":{"start":{"line":54,"column":16},"end":{"line":54,"column":47}},"32":{"start":{"line":55,"column":16},"end":{"line":57,"column":17}},"33":{"start":{"line":56,"column":20},"end":{"line":56,"column":37}},"34":{"start":{"line":58,"column":16},"end":{"line":58,"column":52}},"35":{"start":{"line":59,"column":30},"end":{"line":59,"column":48}},"36":{"start":{"line":60,"column":16},"end":{"line":64,"column":17}},"37":{"start":{"line":61,"column":20},"end":{"line":61,"column":45}},"38":{"start":{"line":62,"column":23},"end":{"line":64,"column":17}},"39":{"start":{"line":63,"column":20},"end":{"line":63,"column":37}},"40":{"start":{"line":67,"column":12},"end":{"line":67,"column":31}},"41":{"start":{"line":70,"column":8},"end":{"line":70,"column":23}},"42":{"start":{"line":74,"column":8},"end":{"line":76,"column":9}},"43":{"start":{"line":75,"column":12},"end":{"line":75,"column":72}},"44":{"start":{"line":80,"column":8},"end":{"line":82,"column":9}},"45":{"start":{"line":81,"column":12},"end":{"line":81,"column":68}},"46":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}},"47":{"start":{"line":86,"column":26},"end":{"line":86,"column":69}},"48":{"start":{"line":87,"column":21},"end":{"line":87,"column":66}},"49":{"start":{"line":88,"column":22},"end":{"line":88,"column":30}},"50":{"start":{"line":89,"column":28},"end":{"line":89,"column":59}},"51":{"start":{"line":90,"column":26},"end":{"line":90,"column":35}},"52":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"53":{"start":{"line":94,"column":8},"end":{"line":94,"column":27}},"54":{"start":{"line":97,"column":14},"end":{"line":97,"column":15}},"55":{"start":{"line":98,"column":19},"end":{"line":98,"column":23}},"56":{"start":{"line":99,"column":14},"end":{"line":99,"column":29}},"57":{"start":{"line":100,"column":18},"end":{"line":100,"column":23}},"58":{"start":{"line":102,"column":4},"end":{"line":112,"column":5}},"59":{"start":{"line":103,"column":8},"end":{"line":109,"column":9}},"60":{"start":{"line":104,"column":12},"end":{"line":104,"column":28}},"61":{"start":{"line":105,"column":15},"end":{"line":109,"column":9}},"62":{"start":{"line":106,"column":12},"end":{"line":106,"column":27}},"63":{"start":{"line":107,"column":15},"end":{"line":109,"column":9}},"64":{"start":{"line":108,"column":12},"end":{"line":108,"column":29}},"65":{"start":{"line":110,"column":8},"end":{"line":110,"column":28}},"66":{"start":{"line":111,"column":8},"end":{"line":111,"column":14}},"67":{"start":{"line":115,"column":4},"end":{"line":119,"column":5}},"68":{"start":{"line":116,"column":8},"end":{"line":116,"column":52}},"69":{"start":{"line":118,"column":8},"end":{"line":118,"column":38}},"70":{"start":{"line":121,"column":4},"end":{"line":121,"column":39}},"71":{"start":{"line":125,"column":19},"end":{"line":125,"column":47}},"72":{"start":{"line":126,"column":17},"end":{"line":126,"column":18}},"73":{"start":{"line":128,"column":4},"end":{"line":130,"column":5}},"74":{"start":{"line":129,"column":8},"end":{"line":129,"column":46}},"75":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"76":{"start":{"line":133,"column":18},"end":{"line":133,"column":23}},"77":{"start":{"line":134,"column":4},"end":{"line":172,"column":5}},"78":{"start":{"line":134,"column":17},"end":{"line":134,"column":18}},"79":{"start":{"line":135,"column":8},"end":{"line":171,"column":9}},"80":{"start":{"line":137,"column":12},"end":{"line":162,"column":13}},"81":{"start":{"line":138,"column":16},"end":{"line":138,"column":53}},"82":{"start":{"line":139,"column":19},"end":{"line":162,"column":13}},"83":{"start":{"line":140,"column":16},"end":{"line":140,"column":52}},"84":{"start":{"line":141,"column":19},"end":{"line":162,"column":13}},"85":{"start":{"line":142,"column":16},"end":{"line":142,"column":52}},"86":{"start":{"line":143,"column":19},"end":{"line":162,"column":13}},"87":{"start":{"line":144,"column":16},"end":{"line":144,"column":53}},"88":{"start":{"line":145,"column":19},"end":{"line":162,"column":13}},"89":{"start":{"line":146,"column":16},"end":{"line":146,"column":53}},"90":{"start":{"line":147,"column":19},"end":{"line":162,"column":13}},"91":{"start":{"line":148,"column":16},"end":{"line":148,"column":53}},"92":{"start":{"line":149,"column":19},"end":{"line":162,"column":13}},"93":{"start":{"line":150,"column":16},"end":{"line":150,"column":53}},"94":{"start":{"line":151,"column":19},"end":{"line":162,"column":13}},"95":{"start":{"line":152,"column":16},"end":{"line":152,"column":53}},"96":{"start":{"line":153,"column":19},"end":{"line":162,"column":13}},"97":{"start":{"line":154,"column":16},"end":{"line":154,"column":53}},"98":{"start":{"line":155,"column":19},"end":{"line":162,"column":13}},"99":{"start":{"line":156,"column":16},"end":{"line":156,"column":53}},"100":{"start":{"line":157,"column":19},"end":{"line":162,"column":13}},"101":{"start":{"line":158,"column":16},"end":{"line":158,"column":72}},"102":{"start":{"line":159,"column":16},"end":{"line":159,"column":23}},"103":{"start":{"line":161,"column":16},"end":{"line":161,"column":55}},"104":{"start":{"line":163,"column":12},"end":{"line":163,"column":28}},"105":{"start":{"line":164,"column":15},"end":{"line":171,"column":9}},"106":{"start":{"line":165,"column":12},"end":{"line":165,"column":27}},"107":{"start":{"line":167,"column":12},"end":{"line":169,"column":13}},"108":{"start":{"line":168,"column":16},"end":{"line":168,"column":54}},"109":{"start":{"line":170,"column":12},"end":{"line":170,"column":51}},"110":{"start":{"line":174,"column":4},"end":{"line":174,"column":52}},"111":{"start":{"line":179,"column":36},"end":{"line":179,"column":38}},"112":{"start":{"line":182,"column":53},"end":{"line":186,"column":6}},"113":{"start":{"line":188,"column":54},"end":{"line":192,"column":6}},"114":{"start":{"line":199,"column":4},"end":{"line":239,"column":6}},"115":{"start":{"line":200,"column":8},"end":{"line":237,"column":9}},"116":{"start":{"line":201,"column":32},"end":{"line":201,"column":51}},"117":{"start":{"line":202,"column":12},"end":{"line":202,"column":26}},"118":{"start":{"line":203,"column":12},"end":{"line":203,"column":23}},"119":{"start":{"line":204,"column":15},"end":{"line":237,"column":9}},"120":{"start":{"line":205,"column":27},"end":{"line":205,"column":44}},"121":{"start":{"line":206,"column":12},"end":{"line":206,"column":38}},"122":{"start":{"line":207,"column":12},"end":{"line":210,"column":13}},"123":{"start":{"line":208,"column":16},"end":{"line":208,"column":42}},"124":{"start":{"line":209,"column":16},"end":{"line":209,"column":26}},"125":{"start":{"line":212,"column":12},"end":{"line":223,"column":13}},"126":{"start":{"line":213,"column":26},"end":{"line":213,"column":38}},"127":{"start":{"line":214,"column":16},"end":{"line":222,"column":17}},"128":{"start":{"line":215,"column":39},"end":{"line":215,"column":41}},"129":{"start":{"line":216,"column":20},"end":{"line":216,"column":34}},"130":{"start":{"line":217,"column":20},"end":{"line":219,"column":21}},"131":{"start":{"line":218,"column":24},"end":{"line":218,"column":38}},"132":{"start":{"line":220,"column":20},"end":{"line":220,"column":46}},"133":{"start":{"line":221,"column":20},"end":{"line":221,"column":31}},"134":{"start":{"line":225,"column":25},"end":{"line":225,"column":38}},"135":{"start":{"line":226,"column":12},"end":{"line":234,"column":13}},"136":{"start":{"line":227,"column":35},"end":{"line":227,"column":37}},"137":{"start":{"line":228,"column":16},"end":{"line":228,"column":33}},"138":{"start":{"line":229,"column":16},"end":{"line":231,"column":17}},"139":{"start":{"line":230,"column":20},"end":{"line":230,"column":37}},"140":{"start":{"line":232,"column":16},"end":{"line":232,"column":42}},"141":{"start":{"line":233,"column":16},"end":{"line":233,"column":27}},"142":{"start":{"line":236,"column":12},"end":{"line":236,"column":51}},"143":{"start":{"line":238,"column":8},"end":{"line":238,"column":25}},"144":{"start":{"line":241,"column":4},"end":{"line":247,"column":6}},"145":{"start":{"line":242,"column":22},"end":{"line":242,"column":54}},"146":{"start":{"line":243,"column":8},"end":{"line":246,"column":9}},"147":{"start":{"line":244,"column":12},"end":{"line":244,"column":56}},"148":{"start":{"line":245,"column":12},"end":{"line":245,"column":44}},"149":{"start":{"line":249,"column":4},"end":{"line":254,"column":6}},"150":{"start":{"line":250,"column":8},"end":{"line":253,"column":9}},"151":{"start":{"line":251,"column":12},"end":{"line":251,"column":38}},"152":{"start":{"line":252,"column":12},"end":{"line":252,"column":32}},"153":{"start":{"line":256,"column":4},"end":{"line":261,"column":6}},"154":{"start":{"line":257,"column":8},"end":{"line":260,"column":9}},"155":{"start":{"line":258,"column":12},"end":{"line":258,"column":38}},"156":{"start":{"line":259,"column":12},"end":{"line":259,"column":33}},"157":{"start":{"line":265,"column":4},"end":{"line":298,"column":5}},"158":{"start":{"line":266,"column":8},"end":{"line":266,"column":48}},"159":{"start":{"line":268,"column":8},"end":{"line":270,"column":9}},"160":{"start":{"line":269,"column":12},"end":{"line":269,"column":39}},"161":{"start":{"line":272,"column":8},"end":{"line":295,"column":9}},"162":{"start":{"line":273,"column":31},"end":{"line":273,"column":61}},"163":{"start":{"line":274,"column":12},"end":{"line":274,"column":57}},"164":{"start":{"line":275,"column":32},"end":{"line":280,"column":14}},"165":{"start":{"line":282,"column":12},"end":{"line":284,"column":13}},"166":{"start":{"line":283,"column":16},"end":{"line":283,"column":40}},"167":{"start":{"line":285,"column":12},"end":{"line":285,"column":42}},"168":{"start":{"line":286,"column":15},"end":{"line":295,"column":9}},"169":{"start":{"line":287,"column":36},"end":{"line":287,"column":55}},"170":{"start":{"line":288,"column":12},"end":{"line":288,"column":26}},"171":{"start":{"line":289,"column":32},"end":{"line":293,"column":14}},"172":{"start":{"line":294,"column":12},"end":{"line":294,"column":42}},"173":{"start":{"line":297,"column":8},"end":{"line":297,"column":51}},"174":{"start":{"line":300,"column":4},"end":{"line":314,"column":5}},"175":{"start":{"line":301,"column":8},"end":{"line":301,"column":48}},"176":{"start":{"line":302,"column":8},"end":{"line":304,"column":9}},"177":{"start":{"line":303,"column":12},"end":{"line":303,"column":39}},"178":{"start":{"line":305,"column":8},"end":{"line":308,"column":10}},"179":{"start":{"line":310,"column":8},"end":{"line":312,"column":9}},"180":{"start":{"line":311,"column":12},"end":{"line":311,"column":44}},"181":{"start":{"line":313,"column":8},"end":{"line":313,"column":51}},"182":{"start":{"line":316,"column":4},"end":{"line":316,"column":68}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":16}},"loc":{"start":{"line":8,"column":73},"end":{"line":12,"column":5}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":10}},"loc":{"start":{"line":14,"column":47},"end":{"line":71,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":73,"column":4},"end":{"line":73,"column":10}},"loc":{"start":{"line":73,"column":23},"end":{"line":77,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":79,"column":4},"end":{"line":79,"column":10}},"loc":{"start":{"line":79,"column":23},"end":{"line":83,"column":5}}},"4":{"name":"parseString","decl":{"start":{"line":92,"column":9},"end":{"line":92,"column":20}},"loc":{"start":{"line":92,"column":34},"end":{"line":122,"column":1}}},"5":{"name":"parseCString","decl":{"start":{"line":124,"column":9},"end":{"line":124,"column":21}},"loc":{"start":{"line":124,"column":33},"end":{"line":175,"column":1}}},"6":{"name":"parseMI","decl":{"start":{"line":177,"column":16},"end":{"line":177,"column":23}},"loc":{"start":{"line":177,"column":38},"end":{"line":317,"column":1}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":199,"column":17},"end":{"line":199,"column":25}},"loc":{"start":{"line":199,"column":27},"end":{"line":239,"column":5}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":241,"column":18},"end":{"line":241,"column":26}},"loc":{"start":{"line":241,"column":28},"end":{"line":247,"column":5}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":249,"column":22},"end":{"line":249,"column":30}},"loc":{"start":{"line":249,"column":32},"end":{"line":254,"column":5}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":256,"column":23},"end":{"line":256,"column":31}},"loc":{"start":{"line":256,"column":33},"end":{"line":261,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":8},"end":{"line":17,"column":9}},"type":"if","locations":[{"start":{"line":15,"column":8},"end":{"line":17,"column":9}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":23,"column":8},"end":{"line":25,"column":9}},"type":"if","locations":[{"start":{"line":23,"column":8},"end":{"line":25,"column":9}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":31,"column":12},"end":{"line":65,"column":13}},"type":"if","locations":[{"start":{"line":31,"column":12},"end":{"line":65,"column":13}},{"start":{"line":50,"column":19},"end":{"line":65,"column":13}}]},"3":{"loc":{"start":{"line":33,"column":16},"end":{"line":49,"column":17}},"type":"if","locations":[{"start":{"line":33,"column":16},"end":{"line":49,"column":17}},{"start":{"line":35,"column":23},"end":{"line":49,"column":17}}]},"4":{"loc":{"start":{"line":33,"column":20},"end":{"line":33,"column":66}},"type":"binary-expr","locations":[{"start":{"line":33,"column":20},"end":{"line":33,"column":35}},{"start":{"line":33,"column":39},"end":{"line":33,"column":66}}]},"5":{"loc":{"start":{"line":38,"column":24},"end":{"line":40,"column":25}},"type":"if","locations":[{"start":{"line":38,"column":24},"end":{"line":40,"column":25}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":42,"column":20},"end":{"line":48,"column":21}},"type":"if","locations":[{"start":{"line":42,"column":20},"end":{"line":48,"column":21}},{"start":{"line":44,"column":27},"end":{"line":48,"column":21}}]},"7":{"loc":{"start":{"line":44,"column":27},"end":{"line":48,"column":21}},"type":"if","locations":[{"start":{"line":44,"column":27},"end":{"line":48,"column":21}},{"start":{"line":46,"column":27},"end":{"line":48,"column":21}}]},"8":{"loc":{"start":{"line":50,"column":19},"end":{"line":65,"column":13}},"type":"if","locations":[{"start":{"line":50,"column":19},"end":{"line":65,"column":13}},{"start":{"line":53,"column":19},"end":{"line":65,"column":13}}]},"9":{"loc":{"start":{"line":55,"column":16},"end":{"line":57,"column":17}},"type":"if","locations":[{"start":{"line":55,"column":16},"end":{"line":57,"column":17}},{"start":{},"end":{}}]},"10":{"loc":{"start":{"line":60,"column":16},"end":{"line":64,"column":17}},"type":"if","locations":[{"start":{"line":60,"column":16},"end":{"line":64,"column":17}},{"start":{"line":62,"column":23},"end":{"line":64,"column":17}}]},"11":{"loc":{"start":{"line":60,"column":20},"end":{"line":60,"column":105}},"type":"binary-expr","locations":[{"start":{"line":60,"column":20},"end":{"line":60,"column":34}},{"start":{"line":60,"column":38},"end":{"line":60,"column":65}},{"start":{"line":60,"column":69},"end":{"line":60,"column":79}},{"start":{"line":60,"column":83},"end":{"line":60,"column":105}}]},"12":{"loc":{"start":{"line":62,"column":23},"end":{"line":64,"column":17}},"type":"if","locations":[{"start":{"line":62,"column":23},"end":{"line":64,"column":17}},{"start":{},"end":{}}]},"13":{"loc":{"start":{"line":74,"column":8},"end":{"line":76,"column":9}},"type":"if","locations":[{"start":{"line":74,"column":8},"end":{"line":76,"column":9}},{"start":{},"end":{}}]},"14":{"loc":{"start":{"line":80,"column":8},"end":{"line":82,"column":9}},"type":"if","locations":[{"start":{"line":80,"column":8},"end":{"line":82,"column":9}},{"start":{},"end":{}}]},"15":{"loc":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"type":"if","locations":[{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},{"start":{},"end":{}}]},"16":{"loc":{"start":{"line":103,"column":8},"end":{"line":109,"column":9}},"type":"if","locations":[{"start":{"line":103,"column":8},"end":{"line":109,"column":9}},{"start":{"line":105,"column":15},"end":{"line":109,"column":9}}]},"17":{"loc":{"start":{"line":105,"column":15},"end":{"line":109,"column":9}},"type":"if","locations":[{"start":{"line":105,"column":15},"end":{"line":109,"column":9}},{"start":{"line":107,"column":15},"end":{"line":109,"column":9}}]},"18":{"loc":{"start":{"line":107,"column":15},"end":{"line":109,"column":9}},"type":"if","locations":[{"start":{"line":107,"column":15},"end":{"line":109,"column":9}},{"start":{},"end":{}}]},"19":{"loc":{"start":{"line":128,"column":4},"end":{"line":130,"column":5}},"type":"if","locations":[{"start":{"line":128,"column":4},"end":{"line":130,"column":5}},{"start":{},"end":{}}]},"20":{"loc":{"start":{"line":128,"column":8},"end":{"line":128,"column":53}},"type":"binary-expr","locations":[{"start":{"line":128,"column":8},"end":{"line":128,"column":22}},{"start":{"line":128,"column":26},"end":{"line":128,"column":53}}]},"21":{"loc":{"start":{"line":135,"column":8},"end":{"line":171,"column":9}},"type":"if","locations":[{"start":{"line":135,"column":8},"end":{"line":171,"column":9}},{"start":{"line":164,"column":15},"end":{"line":171,"column":9}}]},"22":{"loc":{"start":{"line":137,"column":12},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":137,"column":12},"end":{"line":162,"column":13}},{"start":{"line":139,"column":19},"end":{"line":162,"column":13}}]},"23":{"loc":{"start":{"line":139,"column":19},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":139,"column":19},"end":{"line":162,"column":13}},{"start":{"line":141,"column":19},"end":{"line":162,"column":13}}]},"24":{"loc":{"start":{"line":141,"column":19},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":141,"column":19},"end":{"line":162,"column":13}},{"start":{"line":143,"column":19},"end":{"line":162,"column":13}}]},"25":{"loc":{"start":{"line":143,"column":19},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":143,"column":19},"end":{"line":162,"column":13}},{"start":{"line":145,"column":19},"end":{"line":162,"column":13}}]},"26":{"loc":{"start":{"line":145,"column":19},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":145,"column":19},"end":{"line":162,"column":13}},{"start":{"line":147,"column":19},"end":{"line":162,"column":13}}]},"27":{"loc":{"start":{"line":147,"column":19},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":147,"column":19},"end":{"line":162,"column":13}},{"start":{"line":149,"column":19},"end":{"line":162,"column":13}}]},"28":{"loc":{"start":{"line":149,"column":19},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":149,"column":19},"end":{"line":162,"column":13}},{"start":{"line":151,"column":19},"end":{"line":162,"column":13}}]},"29":{"loc":{"start":{"line":151,"column":19},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":151,"column":19},"end":{"line":162,"column":13}},{"start":{"line":153,"column":19},"end":{"line":162,"column":13}}]},"30":{"loc":{"start":{"line":153,"column":19},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":153,"column":19},"end":{"line":162,"column":13}},{"start":{"line":155,"column":19},"end":{"line":162,"column":13}}]},"31":{"loc":{"start":{"line":155,"column":19},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":155,"column":19},"end":{"line":162,"column":13}},{"start":{"line":157,"column":19},"end":{"line":162,"column":13}}]},"32":{"loc":{"start":{"line":157,"column":19},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":157,"column":19},"end":{"line":162,"column":13}},{"start":{"line":160,"column":19},"end":{"line":162,"column":13}}]},"33":{"loc":{"start":{"line":164,"column":15},"end":{"line":171,"column":9}},"type":"if","locations":[{"start":{"line":164,"column":15},"end":{"line":171,"column":9}},{"start":{"line":166,"column":15},"end":{"line":171,"column":9}}]},"34":{"loc":{"start":{"line":167,"column":12},"end":{"line":169,"column":13}},"type":"if","locations":[{"start":{"line":167,"column":12},"end":{"line":169,"column":13}},{"start":{},"end":{}}]},"35":{"loc":{"start":{"line":200,"column":8},"end":{"line":237,"column":9}},"type":"if","locations":[{"start":{"line":200,"column":8},"end":{"line":237,"column":9}},{"start":{"line":204,"column":15},"end":{"line":237,"column":9}}]},"36":{"loc":{"start":{"line":204,"column":15},"end":{"line":237,"column":9}},"type":"if","locations":[{"start":{"line":204,"column":15},"end":{"line":237,"column":9}},{"start":{},"end":{}}]},"37":{"loc":{"start":{"line":204,"column":19},"end":{"line":204,"column":57}},"type":"binary-expr","locations":[{"start":{"line":204,"column":19},"end":{"line":204,"column":36}},{"start":{"line":204,"column":40},"end":{"line":204,"column":57}}]},"38":{"loc":{"start":{"line":207,"column":12},"end":{"line":210,"column":13}},"type":"if","locations":[{"start":{"line":207,"column":12},"end":{"line":210,"column":13}},{"start":{},"end":{}}]},"39":{"loc":{"start":{"line":207,"column":16},"end":{"line":207,"column":54}},"type":"binary-expr","locations":[{"start":{"line":207,"column":16},"end":{"line":207,"column":33}},{"start":{"line":207,"column":37},"end":{"line":207,"column":54}}]},"40":{"loc":{"start":{"line":212,"column":12},"end":{"line":223,"column":13}},"type":"if","locations":[{"start":{"line":212,"column":12},"end":{"line":223,"column":13}},{"start":{},"end":{}}]},"41":{"loc":{"start":{"line":214,"column":16},"end":{"line":222,"column":17}},"type":"if","locations":[{"start":{"line":214,"column":16},"end":{"line":222,"column":17}},{"start":{},"end":{}}]},"42":{"loc":{"start":{"line":226,"column":12},"end":{"line":234,"column":13}},"type":"if","locations":[{"start":{"line":226,"column":12},"end":{"line":234,"column":13}},{"start":{},"end":{}}]},"43":{"loc":{"start":{"line":236,"column":22},"end":{"line":236,"column":40}},"type":"cond-expr","locations":[{"start":{"line":236,"column":31},"end":{"line":236,"column":34}},{"start":{"line":236,"column":37},"end":{"line":236,"column":40}}]},"44":{"loc":{"start":{"line":243,"column":8},"end":{"line":246,"column":9}},"type":"if","locations":[{"start":{"line":243,"column":8},"end":{"line":246,"column":9}},{"start":{},"end":{}}]},"45":{"loc":{"start":{"line":250,"column":8},"end":{"line":253,"column":9}},"type":"if","locations":[{"start":{"line":250,"column":8},"end":{"line":253,"column":9}},{"start":{},"end":{}}]},"46":{"loc":{"start":{"line":257,"column":8},"end":{"line":260,"column":9}},"type":"if","locations":[{"start":{"line":257,"column":8},"end":{"line":260,"column":9}},{"start":{},"end":{}}]},"47":{"loc":{"start":{"line":268,"column":8},"end":{"line":270,"column":9}},"type":"if","locations":[{"start":{"line":268,"column":8},"end":{"line":270,"column":9}},{"start":{},"end":{}}]},"48":{"loc":{"start":{"line":268,"column":12},"end":{"line":268,"column":71}},"type":"binary-expr","locations":[{"start":{"line":268,"column":12},"end":{"line":268,"column":20}},{"start":{"line":268,"column":24},"end":{"line":268,"column":43}},{"start":{"line":268,"column":47},"end":{"line":268,"column":71}}]},"49":{"loc":{"start":{"line":272,"column":8},"end":{"line":295,"column":9}},"type":"if","locations":[{"start":{"line":272,"column":8},"end":{"line":295,"column":9}},{"start":{"line":286,"column":15},"end":{"line":295,"column":9}}]},"50":{"loc":{"start":{"line":286,"column":15},"end":{"line":295,"column":9}},"type":"if","locations":[{"start":{"line":286,"column":15},"end":{"line":295,"column":9}},{"start":{},"end":{}}]},"51":{"loc":{"start":{"line":300,"column":4},"end":{"line":314,"column":5}},"type":"if","locations":[{"start":{"line":300,"column":4},"end":{"line":314,"column":5}},{"start":{},"end":{}}]},"52":{"loc":{"start":{"line":302,"column":8},"end":{"line":304,"column":9}},"type":"if","locations":[{"start":{"line":302,"column":8},"end":{"line":304,"column":9}},{"start":{},"end":{}}]},"53":{"loc":{"start":{"line":302,"column":12},"end":{"line":302,"column":43}},"type":"binary-expr","locations":[{"start":{"line":302,"column":12},"end":{"line":302,"column":20}},{"start":{"line":302,"column":24},"end":{"line":302,"column":43}}]},"54":{"loc":{"start":{"line":316,"column":29},"end":{"line":316,"column":51}},"type":"binary-expr","locations":[{"start":{"line":316,"column":29},"end":{"line":316,"column":45}},{"start":{"line":316,"column":49},"end":{"line":316,"column":51}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0,0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,0],"54":[0,0]}} +,"/home/jailuser/git/src/backend/symbols.ts": {"path":"/home/jailuser/git/src/backend/symbols.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":46}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":25}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":6,"column":21},"end":{"line":6,"column":126}},"5":{"start":{"line":7,"column":29},"end":{"line":7,"column":50}},"6":{"start":{"line":9,"column":48},"end":{"line":14,"column":2}},"7":{"start":{"line":16,"column":50},"end":{"line":21,"column":2}},"8":{"start":{"line":39,"column":16},"end":{"line":39,"column":39}},"9":{"start":{"line":40,"column":16},"end":{"line":40,"column":34}},"10":{"start":{"line":36,"column":12},"end":{"line":36,"column":46}},"11":{"start":{"line":44,"column":26},"end":{"line":44,"column":28}},"12":{"start":{"line":45,"column":8},"end":{"line":49,"column":11}},"13":{"start":{"line":46,"column":12},"end":{"line":48,"column":13}},"14":{"start":{"line":47,"column":16},"end":{"line":47,"column":68}},"15":{"start":{"line":51,"column":8},"end":{"line":53,"column":9}},"16":{"start":{"line":52,"column":12},"end":{"line":52,"column":64}},"17":{"start":{"line":55,"column":22},"end":{"line":58,"column":24}},"18":{"start":{"line":60,"column":41},"end":{"line":60,"column":45}},"19":{"start":{"line":62,"column":8},"end":{"line":109,"column":9}},"20":{"start":{"line":63,"column":26},"end":{"line":63,"column":50}},"21":{"start":{"line":64,"column":12},"end":{"line":66,"column":13}},"22":{"start":{"line":65,"column":16},"end":{"line":65,"column":25}},"23":{"start":{"line":68,"column":25},"end":{"line":68,"column":43}},"24":{"start":{"line":69,"column":26},"end":{"line":69,"column":45}},"25":{"start":{"line":70,"column":23},"end":{"line":70,"column":39}},"26":{"start":{"line":71,"column":25},"end":{"line":71,"column":30}},"27":{"start":{"line":73,"column":12},"end":{"line":108,"column":13}},"28":{"start":{"line":74,"column":16},"end":{"line":74,"column":35}},"29":{"start":{"line":76,"column":16},"end":{"line":79,"column":17}},"30":{"start":{"line":77,"column":20},"end":{"line":77,"column":52}},"31":{"start":{"line":78,"column":20},"end":{"line":78,"column":34}},"32":{"start":{"line":81,"column":39},"end":{"line":81,"column":71}},"33":{"start":{"line":82,"column":16},"end":{"line":95,"column":17}},"34":{"start":{"line":83,"column":20},"end":{"line":85,"column":21}},"35":{"start":{"line":84,"column":24},"end":{"line":84,"column":33}},"36":{"start":{"line":86,"column":39},"end":{"line":86,"column":66}},"37":{"start":{"line":87,"column":20},"end":{"line":87,"column":67}},"38":{"start":{"line":89,"column":20},"end":{"line":94,"column":21}},"39":{"start":{"line":90,"column":44},"end":{"line":90,"column":101}},"40":{"start":{"line":91,"column":24},"end":{"line":93,"column":25}},"41":{"start":{"line":92,"column":28},"end":{"line":92,"column":94}},"42":{"start":{"line":97,"column":16},"end":{"line":107,"column":19}},"43":{"start":{"line":113,"column":24},"end":{"line":117,"column":null}},"44":{"start":{"line":115,"column":16},"end":{"line":117,"column":50}},"45":{"start":{"line":119,"column":8},"end":{"line":121,"column":9}},"46":{"start":{"line":120,"column":12},"end":{"line":120,"column":30}},"47":{"start":{"line":125,"column":8},"end":{"line":125,"column":78}},"48":{"start":{"line":125,"column":44},"end":{"line":125,"column":76}},"49":{"start":{"line":129,"column":8},"end":{"line":131,"column":10}},"50":{"start":{"line":130,"column":21},"end":{"line":130,"column":87}},"51":{"start":{"line":135,"column":8},"end":{"line":140,"column":10}},"52":{"start":{"line":137,"column":16},"end":{"line":139,"column":33}},"53":{"start":{"line":144,"column":22},"end":{"line":149,"column":null}},"54":{"start":{"line":146,"column":16},"end":{"line":149,"column":33}},"55":{"start":{"line":151,"column":8},"end":{"line":153,"column":9}},"56":{"start":{"line":152,"column":12},"end":{"line":152,"column":30}},"57":{"start":{"line":155,"column":8},"end":{"line":160,"column":10}},"58":{"start":{"line":157,"column":16},"end":{"line":159,"column":33}},"59":{"start":{"line":161,"column":8},"end":{"line":163,"column":9}},"60":{"start":{"line":162,"column":12},"end":{"line":162,"column":30}},"61":{"start":{"line":165,"column":8},"end":{"line":165,"column":20}},"62":{"start":{"line":35,"column":0},"end":{"line":35,"column":13}}},"fnMap":{"0":{"name":"(anonymous_9)","decl":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"loc":{"start":{"line":40,"column":34},"end":{"line":41,"column":8}}},"1":{"name":"(anonymous_10)","decl":{"start":{"line":43,"column":4},"end":{"line":43,"column":15}},"loc":{"start":{"line":43,"column":15},"end":{"line":110,"column":5}}},"2":{"name":"(anonymous_11)","decl":{"start":{"line":45,"column":53},"end":{"line":45,"column":54}},"loc":{"start":{"line":45,"column":62},"end":{"line":49,"column":9}}},"3":{"name":"(anonymous_12)","decl":{"start":{"line":112,"column":4},"end":{"line":112,"column":24}},"loc":{"start":{"line":112,"column":40},"end":{"line":122,"column":5}}},"4":{"name":"(anonymous_13)","decl":{"start":{"line":114,"column":12},"end":{"line":114,"column":13}},"loc":{"start":{"line":115,"column":16},"end":{"line":117,"column":50}}},"5":{"name":"(anonymous_14)","decl":{"start":{"line":124,"column":4},"end":{"line":124,"column":22}},"loc":{"start":{"line":124,"column":22},"end":{"line":126,"column":5}}},"6":{"name":"(anonymous_15)","decl":{"start":{"line":125,"column":35},"end":{"line":125,"column":36}},"loc":{"start":{"line":125,"column":44},"end":{"line":125,"column":76}}},"7":{"name":"(anonymous_16)","decl":{"start":{"line":128,"column":4},"end":{"line":128,"column":22}},"loc":{"start":{"line":128,"column":22},"end":{"line":132,"column":5}}},"8":{"name":"(anonymous_17)","decl":{"start":{"line":130,"column":12},"end":{"line":130,"column":13}},"loc":{"start":{"line":130,"column":21},"end":{"line":130,"column":87}}},"9":{"name":"(anonymous_18)","decl":{"start":{"line":134,"column":4},"end":{"line":134,"column":22}},"loc":{"start":{"line":134,"column":35},"end":{"line":141,"column":5}}},"10":{"name":"(anonymous_19)","decl":{"start":{"line":136,"column":12},"end":{"line":136,"column":13}},"loc":{"start":{"line":137,"column":16},"end":{"line":139,"column":33}}},"11":{"name":"(anonymous_20)","decl":{"start":{"line":143,"column":4},"end":{"line":143,"column":21}},"loc":{"start":{"line":143,"column":48},"end":{"line":166,"column":5}}},"12":{"name":"(anonymous_21)","decl":{"start":{"line":145,"column":12},"end":{"line":145,"column":13}},"loc":{"start":{"line":146,"column":16},"end":{"line":149,"column":33}}},"13":{"name":"(anonymous_22)","decl":{"start":{"line":156,"column":12},"end":{"line":156,"column":13}},"loc":{"start":{"line":157,"column":16},"end":{"line":159,"column":33}}}},"branchMap":{"0":{"loc":{"start":{"line":46,"column":12},"end":{"line":48,"column":13}},"type":"if","locations":[{"start":{"line":46,"column":12},"end":{"line":48,"column":13}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":46,"column":16},"end":{"line":46,"column":96}},"type":"binary-expr","locations":[{"start":{"line":46,"column":16},"end":{"line":46,"column":40}},{"start":{"line":46,"column":44},"end":{"line":46,"column":96}}]},"2":{"loc":{"start":{"line":51,"column":8},"end":{"line":53,"column":9}},"type":"if","locations":[{"start":{"line":51,"column":8},"end":{"line":53,"column":9}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":64,"column":12},"end":{"line":66,"column":13}},"type":"if","locations":[{"start":{"line":64,"column":12},"end":{"line":66,"column":13}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":73,"column":12},"end":{"line":108,"column":13}},"type":"if","locations":[{"start":{"line":73,"column":12},"end":{"line":108,"column":13}},{"start":{"line":75,"column":19},"end":{"line":108,"column":13}}]},"5":{"loc":{"start":{"line":73,"column":16},"end":{"line":73,"column":52}},"type":"binary-expr","locations":[{"start":{"line":73,"column":16},"end":{"line":73,"column":32}},{"start":{"line":73,"column":36},"end":{"line":73,"column":52}}]},"6":{"loc":{"start":{"line":76,"column":16},"end":{"line":79,"column":17}},"type":"if","locations":[{"start":{"line":76,"column":16},"end":{"line":79,"column":17}},{"start":{},"end":{}}]},"7":{"loc":{"start":{"line":82,"column":16},"end":{"line":95,"column":17}},"type":"if","locations":[{"start":{"line":82,"column":16},"end":{"line":95,"column":17}},{"start":{},"end":{}}]},"8":{"loc":{"start":{"line":83,"column":20},"end":{"line":85,"column":21}},"type":"if","locations":[{"start":{"line":83,"column":20},"end":{"line":85,"column":21}},{"start":{},"end":{}}]},"9":{"loc":{"start":{"line":89,"column":20},"end":{"line":94,"column":21}},"type":"if","locations":[{"start":{"line":89,"column":20},"end":{"line":94,"column":21}},{"start":{},"end":{}}]},"10":{"loc":{"start":{"line":91,"column":24},"end":{"line":93,"column":25}},"type":"if","locations":[{"start":{"line":91,"column":24},"end":{"line":93,"column":25}},{"start":{},"end":{}}]},"11":{"loc":{"start":{"line":104,"column":26},"end":{"line":104,"column":74}},"type":"cond-expr","locations":[{"start":{"line":104,"column":56},"end":{"line":104,"column":67}},{"start":{"line":104,"column":70},"end":{"line":104,"column":74}}]},"12":{"loc":{"start":{"line":115,"column":16},"end":{"line":117,"column":50}},"type":"binary-expr","locations":[{"start":{"line":115,"column":16},"end":{"line":115,"column":48}},{"start":{"line":116,"column":16},"end":{"line":116,"column":38}},{"start":{"line":117,"column":16},"end":{"line":117,"column":50}}]},"13":{"loc":{"start":{"line":119,"column":8},"end":{"line":121,"column":9}},"type":"if","locations":[{"start":{"line":119,"column":8},"end":{"line":121,"column":9}},{"start":{},"end":{}}]},"14":{"loc":{"start":{"line":119,"column":12},"end":{"line":119,"column":43}},"type":"binary-expr","locations":[{"start":{"line":119,"column":12},"end":{"line":119,"column":19}},{"start":{"line":119,"column":23},"end":{"line":119,"column":43}}]},"15":{"loc":{"start":{"line":130,"column":21},"end":{"line":130,"column":87}},"type":"binary-expr","locations":[{"start":{"line":130,"column":21},"end":{"line":130,"column":51}},{"start":{"line":130,"column":55},"end":{"line":130,"column":87}}]},"16":{"loc":{"start":{"line":137,"column":16},"end":{"line":139,"column":33}},"type":"binary-expr","locations":[{"start":{"line":137,"column":16},"end":{"line":137,"column":46}},{"start":{"line":138,"column":16},"end":{"line":138,"column":47}},{"start":{"line":139,"column":16},"end":{"line":139,"column":33}}]},"17":{"loc":{"start":{"line":146,"column":16},"end":{"line":149,"column":33}},"type":"binary-expr","locations":[{"start":{"line":146,"column":16},"end":{"line":146,"column":48}},{"start":{"line":147,"column":16},"end":{"line":147,"column":47}},{"start":{"line":148,"column":16},"end":{"line":148,"column":33}},{"start":{"line":149,"column":16},"end":{"line":149,"column":33}}]},"18":{"loc":{"start":{"line":151,"column":8},"end":{"line":153,"column":9}},"type":"if","locations":[{"start":{"line":151,"column":8},"end":{"line":153,"column":9}},{"start":{},"end":{}}]},"19":{"loc":{"start":{"line":157,"column":16},"end":{"line":159,"column":33}},"type":"binary-expr","locations":[{"start":{"line":157,"column":16},"end":{"line":157,"column":48}},{"start":{"line":158,"column":16},"end":{"line":158,"column":47}},{"start":{"line":159,"column":16},"end":{"line":159,"column":33}}]},"20":{"loc":{"start":{"line":161,"column":8},"end":{"line":163,"column":9}},"type":"if","locations":[{"start":{"line":161,"column":8},"end":{"line":163,"column":9}},{"start":{},"end":{}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0,0],"17":[0,0,0,0],"18":[0,0],"19":[0,0,0],"20":[0,0]}} +,"/home/jailuser/git/src/backend/mi2/mi2.ts": {"path":"/home/jailuser/git/src/backend/mi2/mi2.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":16}},"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":46}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":38}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"5":{"start":{"line":7,"column":4},"end":{"line":7,"column":59}},"6":{"start":{"line":10,"column":24},"end":{"line":10,"column":63}},"7":{"start":{"line":11,"column":25},"end":{"line":11,"column":51}},"8":{"start":{"line":12,"column":26},"end":{"line":12,"column":31}},"9":{"start":{"line":15,"column":4},"end":{"line":15,"column":39}},"10":{"start":{"line":33,"column":8},"end":{"line":33,"column":16}},"11":{"start":{"line":30,"column":15},"end":{"line":30,"column":34}},"12":{"start":{"line":31,"column":15},"end":{"line":31,"column":29}},"13":{"start":{"line":20,"column":12},"end":{"line":20,"column":37}},"14":{"start":{"line":21,"column":12},"end":{"line":21,"column":73}},"15":{"start":{"line":24,"column":12},"end":{"line":24,"column":45}},"16":{"start":{"line":37,"column":8},"end":{"line":67,"column":11}},"17":{"start":{"line":38,"column":25},"end":{"line":38,"column":39}},"18":{"start":{"line":39,"column":24},"end":{"line":39,"column":50}},"19":{"start":{"line":40,"column":12},"end":{"line":43,"column":13}},"20":{"start":{"line":41,"column":16},"end":{"line":41,"column":55}},"21":{"start":{"line":42,"column":16},"end":{"line":42,"column":55}},"22":{"start":{"line":45,"column":12},"end":{"line":49,"column":15}},"23":{"start":{"line":51,"column":12},"end":{"line":51,"column":67}},"24":{"start":{"line":52,"column":12},"end":{"line":52,"column":67}},"25":{"start":{"line":53,"column":12},"end":{"line":55,"column":27}},"26":{"start":{"line":54,"column":16},"end":{"line":54,"column":34}},"27":{"start":{"line":56,"column":12},"end":{"line":58,"column":27}},"28":{"start":{"line":57,"column":16},"end":{"line":57,"column":46}},"29":{"start":{"line":60,"column":33},"end":{"line":63,"column":14}},"30":{"start":{"line":62,"column":41},"end":{"line":62,"column":62}},"31":{"start":{"line":64,"column":12},"end":{"line":66,"column":23}},"32":{"start":{"line":65,"column":16},"end":{"line":65,"column":30}},"33":{"start":{"line":71,"column":8},"end":{"line":71,"column":79}},"34":{"start":{"line":72,"column":29},"end":{"line":72,"column":58}},"35":{"start":{"line":73,"column":8},"end":{"line":76,"column":9}},"36":{"start":{"line":74,"column":12},"end":{"line":74,"column":63}},"37":{"start":{"line":75,"column":12},"end":{"line":75,"column":63}},"38":{"start":{"line":77,"column":8},"end":{"line":81,"column":9}},"39":{"start":{"line":78,"column":12},"end":{"line":80,"column":13}},"40":{"start":{"line":79,"column":16},"end":{"line":79,"column":33}},"41":{"start":{"line":85,"column":8},"end":{"line":85,"column":79}},"42":{"start":{"line":86,"column":29},"end":{"line":86,"column":58}},"43":{"start":{"line":87,"column":8},"end":{"line":90,"column":9}},"44":{"start":{"line":88,"column":12},"end":{"line":88,"column":69}},"45":{"start":{"line":89,"column":12},"end":{"line":89,"column":63}},"46":{"start":{"line":91,"column":8},"end":{"line":94,"column":9}},"47":{"start":{"line":92,"column":12},"end":{"line":92,"column":53}},"48":{"start":{"line":93,"column":12},"end":{"line":93,"column":29}},"49":{"start":{"line":98,"column":22},"end":{"line":98,"column":40}},"50":{"start":{"line":99,"column":8},"end":{"line":101,"column":11}},"51":{"start":{"line":100,"column":12},"end":{"line":100,"column":37}},"52":{"start":{"line":105,"column":8},"end":{"line":108,"column":9}},"53":{"start":{"line":106,"column":12},"end":{"line":106,"column":46}},"54":{"start":{"line":107,"column":12},"end":{"line":107,"column":24}},"55":{"start":{"line":109,"column":8},"end":{"line":109,"column":21}},"56":{"start":{"line":113,"column":22},"end":{"line":113,"column":40}},"57":{"start":{"line":114,"column":8},"end":{"line":208,"column":11}},"58":{"start":{"line":115,"column":12},"end":{"line":207,"column":13}},"59":{"start":{"line":116,"column":16},"end":{"line":118,"column":17}},"60":{"start":{"line":117,"column":20},"end":{"line":117,"column":45}},"61":{"start":{"line":120,"column":31},"end":{"line":120,"column":44}},"62":{"start":{"line":121,"column":16},"end":{"line":123,"column":17}},"63":{"start":{"line":122,"column":20},"end":{"line":122,"column":77}},"64":{"start":{"line":125,"column":30},"end":{"line":125,"column":35}},"65":{"start":{"line":127,"column":16},"end":{"line":131,"column":17}},"66":{"start":{"line":128,"column":20},"end":{"line":128,"column":56}},"67":{"start":{"line":129,"column":20},"end":{"line":129,"column":55}},"68":{"start":{"line":130,"column":20},"end":{"line":130,"column":35}},"69":{"start":{"line":133,"column":16},"end":{"line":135,"column":17}},"70":{"start":{"line":134,"column":20},"end":{"line":134,"column":69}},"71":{"start":{"line":137,"column":16},"end":{"line":198,"column":17}},"72":{"start":{"line":138,"column":20},"end":{"line":196,"column":23}},"73":{"start":{"line":139,"column":24},"end":{"line":195,"column":25}},"74":{"start":{"line":140,"column":28},"end":{"line":151,"column":29}},"75":{"start":{"line":141,"column":32},"end":{"line":144,"column":40}},"76":{"start":{"line":142,"column":36},"end":{"line":142,"column":64}},"77":{"start":{"line":143,"column":36},"end":{"line":143,"column":61}},"78":{"start":{"line":145,"column":32},"end":{"line":150,"column":35}},"79":{"start":{"line":146,"column":36},"end":{"line":149,"column":37}},"80":{"start":{"line":147,"column":40},"end":{"line":147,"column":77}},"81":{"start":{"line":148,"column":40},"end":{"line":148,"column":65}},"82":{"start":{"line":152,"column":28},"end":{"line":152,"column":66}},"83":{"start":{"line":153,"column":31},"end":{"line":195,"column":25}},"84":{"start":{"line":154,"column":28},"end":{"line":154,"column":67}},"85":{"start":{"line":155,"column":28},"end":{"line":181,"column":29}},"86":{"start":{"line":156,"column":32},"end":{"line":156,"column":61}},"87":{"start":{"line":157,"column":35},"end":{"line":181,"column":29}},"88":{"start":{"line":158,"column":47},"end":{"line":158,"column":70}},"89":{"start":{"line":159,"column":32},"end":{"line":177,"column":33}},"90":{"start":{"line":160,"column":36},"end":{"line":160,"column":68}},"91":{"start":{"line":161,"column":39},"end":{"line":177,"column":33}},"92":{"start":{"line":162,"column":36},"end":{"line":162,"column":66}},"93":{"start":{"line":163,"column":39},"end":{"line":177,"column":33}},"94":{"start":{"line":164,"column":36},"end":{"line":164,"column":70}},"95":{"start":{"line":165,"column":39},"end":{"line":177,"column":33}},"96":{"start":{"line":166,"column":36},"end":{"line":166,"column":69}},"97":{"start":{"line":167,"column":39},"end":{"line":177,"column":33}},"98":{"start":{"line":168,"column":36},"end":{"line":168,"column":73}},"99":{"start":{"line":169,"column":39},"end":{"line":177,"column":33}},"100":{"start":{"line":170,"column":36},"end":{"line":170,"column":113}},"101":{"start":{"line":171,"column":36},"end":{"line":171,"column":73}},"102":{"start":{"line":173,"column":36},"end":{"line":175,"column":37}},"103":{"start":{"line":174,"column":40},"end":{"line":174,"column":123}},"104":{"start":{"line":176,"column":36},"end":{"line":176,"column":65}},"105":{"start":{"line":178,"column":32},"end":{"line":178,"column":69}},"106":{"start":{"line":180,"column":32},"end":{"line":180,"column":72}},"107":{"start":{"line":182,"column":31},"end":{"line":195,"column":25}},"108":{"start":{"line":183,"column":28},"end":{"line":194,"column":29}},"109":{"start":{"line":184,"column":49},"end":{"line":184,"column":68}},"110":{"start":{"line":185,"column":54},"end":{"line":185,"column":79}},"111":{"start":{"line":186,"column":32},"end":{"line":186,"column":89}},"112":{"start":{"line":187,"column":35},"end":{"line":194,"column":29}},"113":{"start":{"line":188,"column":49},"end":{"line":188,"column":68}},"114":{"start":{"line":189,"column":54},"end":{"line":189,"column":79}},"115":{"start":{"line":190,"column":32},"end":{"line":190,"column":88}},"116":{"start":{"line":191,"column":35},"end":{"line":194,"column":29}},"117":{"start":{"line":192,"column":49},"end":{"line":192,"column":68}},"118":{"start":{"line":193,"column":32},"end":{"line":193,"column":75}},"119":{"start":{"line":197,"column":20},"end":{"line":197,"column":35}},"120":{"start":{"line":200,"column":16},"end":{"line":202,"column":17}},"121":{"start":{"line":201,"column":20},"end":{"line":201,"column":35}},"122":{"start":{"line":204,"column":16},"end":{"line":206,"column":17}},"123":{"start":{"line":205,"column":20},"end":{"line":205,"column":76}},"124":{"start":{"line":212,"column":8},"end":{"line":220,"column":9}},"125":{"start":{"line":213,"column":25},"end":{"line":213,"column":37}},"126":{"start":{"line":214,"column":32},"end":{"line":216,"column":20}},"127":{"start":{"line":215,"column":16},"end":{"line":215,"column":40}},"128":{"start":{"line":217,"column":12},"end":{"line":219,"column":15}},"129":{"start":{"line":218,"column":16},"end":{"line":218,"column":42}},"130":{"start":{"line":221,"column":8},"end":{"line":221,"column":34}},"131":{"start":{"line":225,"column":21},"end":{"line":225,"column":33}},"132":{"start":{"line":226,"column":28},"end":{"line":228,"column":16}},"133":{"start":{"line":227,"column":12},"end":{"line":227,"column":36}},"134":{"start":{"line":229,"column":8},"end":{"line":231,"column":11}},"135":{"start":{"line":230,"column":12},"end":{"line":230,"column":38}},"136":{"start":{"line":232,"column":8},"end":{"line":232,"column":39}},"137":{"start":{"line":236,"column":8},"end":{"line":243,"column":11}},"138":{"start":{"line":237,"column":12},"end":{"line":242,"column":14}},"139":{"start":{"line":239,"column":20},"end":{"line":239,"column":73}},"140":{"start":{"line":247,"column":8},"end":{"line":254,"column":11}},"141":{"start":{"line":248,"column":12},"end":{"line":253,"column":14}},"142":{"start":{"line":250,"column":20},"end":{"line":250,"column":76}},"143":{"start":{"line":258,"column":8},"end":{"line":266,"column":11}},"144":{"start":{"line":259,"column":28},"end":{"line":259,"column":79}},"145":{"start":{"line":260,"column":12},"end":{"line":265,"column":14}},"146":{"start":{"line":262,"column":20},"end":{"line":262,"column":76}},"147":{"start":{"line":270,"column":8},"end":{"line":278,"column":11}},"148":{"start":{"line":271,"column":28},"end":{"line":271,"column":79}},"149":{"start":{"line":272,"column":12},"end":{"line":277,"column":14}},"150":{"start":{"line":274,"column":20},"end":{"line":274,"column":76}},"151":{"start":{"line":282,"column":8},"end":{"line":289,"column":11}},"152":{"start":{"line":283,"column":12},"end":{"line":288,"column":14}},"153":{"start":{"line":285,"column":20},"end":{"line":285,"column":76}},"154":{"start":{"line":293,"column":8},"end":{"line":293,"column":51}},"155":{"start":{"line":297,"column":8},"end":{"line":312,"column":11}},"156":{"start":{"line":298,"column":32},"end":{"line":310,"column":25}},"157":{"start":{"line":299,"column":16},"end":{"line":302,"column":17}},"158":{"start":{"line":300,"column":20},"end":{"line":300,"column":34}},"159":{"start":{"line":301,"column":20},"end":{"line":301,"column":27}},"160":{"start":{"line":303,"column":28},"end":{"line":303,"column":40}},"161":{"start":{"line":304,"column":16},"end":{"line":309,"column":18}},"162":{"start":{"line":306,"column":24},"end":{"line":306,"column":56}},"163":{"start":{"line":311,"column":12},"end":{"line":311,"column":34}},"164":{"start":{"line":316,"column":8},"end":{"line":316,"column":72}},"165":{"start":{"line":320,"column":8},"end":{"line":320,"column":89}},"166":{"start":{"line":324,"column":8},"end":{"line":377,"column":11}},"167":{"start":{"line":325,"column":23},"end":{"line":325,"column":25}},"168":{"start":{"line":327,"column":12},"end":{"line":344,"column":13}},"169":{"start":{"line":328,"column":16},"end":{"line":343,"column":17}},"170":{"start":{"line":329,"column":20},"end":{"line":329,"column":105}},"171":{"start":{"line":331,"column":34},"end":{"line":331,"column":86}},"172":{"start":{"line":332,"column":20},"end":{"line":342,"column":21}},"173":{"start":{"line":333,"column":24},"end":{"line":338,"column":26}},"174":{"start":{"line":339,"column":24},"end":{"line":339,"column":38}},"175":{"start":{"line":340,"column":27},"end":{"line":342,"column":21}},"176":{"start":{"line":341,"column":24},"end":{"line":341,"column":65}},"177":{"start":{"line":346,"column":12},"end":{"line":350,"column":13}},"178":{"start":{"line":347,"column":16},"end":{"line":347,"column":53}},"179":{"start":{"line":349,"column":16},"end":{"line":349,"column":84}},"180":{"start":{"line":352,"column":12},"end":{"line":376,"column":14}},"181":{"start":{"line":354,"column":20},"end":{"line":373,"column":21}},"182":{"start":{"line":355,"column":43},"end":{"line":355,"column":81}},"183":{"start":{"line":356,"column":24},"end":{"line":356,"column":55}},"184":{"start":{"line":357,"column":24},"end":{"line":370,"column":25}},"185":{"start":{"line":358,"column":28},"end":{"line":367,"column":30}},"186":{"start":{"line":360,"column":36},"end":{"line":364,"column":37}},"187":{"start":{"line":361,"column":40},"end":{"line":361,"column":60}},"188":{"start":{"line":363,"column":40},"end":{"line":363,"column":54}},"189":{"start":{"line":369,"column":28},"end":{"line":369,"column":48}},"190":{"start":{"line":372,"column":24},"end":{"line":372,"column":38}},"191":{"start":{"line":381,"column":8},"end":{"line":393,"column":11}},"192":{"start":{"line":382,"column":12},"end":{"line":392,"column":13}},"193":{"start":{"line":383,"column":16},"end":{"line":383,"column":30}},"194":{"start":{"line":385,"column":28},"end":{"line":385,"column":73}},"195":{"start":{"line":386,"column":16},"end":{"line":391,"column":18}},"196":{"start":{"line":388,"column":24},"end":{"line":388,"column":77}},"197":{"start":{"line":397,"column":8},"end":{"line":423,"column":11}},"198":{"start":{"line":398,"column":24},"end":{"line":398,"column":85}},"199":{"start":{"line":399,"column":12},"end":{"line":422,"column":14}},"200":{"start":{"line":401,"column":34},"end":{"line":401,"column":56}},"201":{"start":{"line":402,"column":34},"end":{"line":402,"column":64}},"202":{"start":{"line":403,"column":36},"end":{"line":403,"column":65}},"203":{"start":{"line":404,"column":33},"end":{"line":404,"column":62}},"204":{"start":{"line":405,"column":33},"end":{"line":405,"column":62}},"205":{"start":{"line":406,"column":37},"end":{"line":406,"column":70}},"206":{"start":{"line":407,"column":31},"end":{"line":407,"column":32}},"207":{"start":{"line":408,"column":36},"end":{"line":408,"column":65}},"208":{"start":{"line":409,"column":20},"end":{"line":411,"column":21}},"209":{"start":{"line":410,"column":24},"end":{"line":410,"column":49}},"210":{"start":{"line":412,"column":20},"end":{"line":419,"column":23}},"211":{"start":{"line":427,"column":8},"end":{"line":457,"column":11}},"212":{"start":{"line":428,"column":12},"end":{"line":456,"column":14}},"213":{"start":{"line":430,"column":34},"end":{"line":430,"column":56}},"214":{"start":{"line":431,"column":42},"end":{"line":431,"column":44}},"215":{"start":{"line":432,"column":20},"end":{"line":452,"column":23}},"216":{"start":{"line":433,"column":38},"end":{"line":433,"column":75}},"217":{"start":{"line":434,"column":40},"end":{"line":434,"column":76}},"218":{"start":{"line":435,"column":37},"end":{"line":435,"column":73}},"219":{"start":{"line":436,"column":37},"end":{"line":436,"column":73}},"220":{"start":{"line":437,"column":41},"end":{"line":437,"column":81}},"221":{"start":{"line":438,"column":35},"end":{"line":438,"column":36}},"222":{"start":{"line":439,"column":40},"end":{"line":439,"column":76}},"223":{"start":{"line":440,"column":24},"end":{"line":442,"column":25}},"224":{"start":{"line":441,"column":28},"end":{"line":441,"column":53}},"225":{"start":{"line":443,"column":37},"end":{"line":443,"column":83}},"226":{"start":{"line":444,"column":24},"end":{"line":451,"column":27}},"227":{"start":{"line":453,"column":20},"end":{"line":453,"column":36}},"228":{"start":{"line":461,"column":23},"end":{"line":462,"column":null}},"229":{"start":{"line":464,"column":26},"end":{"line":464,"column":52}},"230":{"start":{"line":465,"column":28},"end":{"line":465,"column":30}},"231":{"start":{"line":466,"column":8},"end":{"line":471,"column":9}},"232":{"start":{"line":467,"column":25},"end":{"line":467,"column":57}},"233":{"start":{"line":468,"column":29},"end":{"line":468,"column":62}},"234":{"start":{"line":469,"column":25},"end":{"line":469,"column":57}},"235":{"start":{"line":470,"column":12},"end":{"line":470,"column":63}},"236":{"start":{"line":472,"column":8},"end":{"line":472,"column":20}},"237":{"start":{"line":476,"column":21},"end":{"line":476,"column":23}},"238":{"start":{"line":477,"column":29},"end":{"line":477,"column":36}},"239":{"start":{"line":478,"column":8},"end":{"line":486,"column":9}},"240":{"start":{"line":479,"column":30},"end":{"line":479,"column":59}},"241":{"start":{"line":480,"column":29},"end":{"line":481,"column":null}},"242":{"start":{"line":483,"column":12},"end":{"line":483,"column":60}},"243":{"start":{"line":484,"column":12},"end":{"line":484,"column":32}},"244":{"start":{"line":485,"column":12},"end":{"line":485,"column":40}},"245":{"start":{"line":487,"column":8},"end":{"line":487,"column":22}},"246":{"start":{"line":491,"column":8},"end":{"line":498,"column":11}},"247":{"start":{"line":492,"column":12},"end":{"line":497,"column":14}},"248":{"start":{"line":494,"column":20},"end":{"line":494,"column":36}},"249":{"start":{"line":501,"column":20},"end":{"line":504,"column":null}},"250":{"start":{"line":502,"column":23},"end":{"line":502,"column":85}},"251":{"start":{"line":503,"column":8},"end":{"line":503,"column":53}},"252":{"start":{"line":507,"column":8},"end":{"line":507,"column":67}},"253":{"start":{"line":511,"column":23},"end":{"line":511,"column":87}},"254":{"start":{"line":512,"column":8},"end":{"line":512,"column":99}},"255":{"start":{"line":512,"column":69},"end":{"line":512,"column":97}},"256":{"start":{"line":515,"column":20},"end":{"line":517,"column":null}},"257":{"start":{"line":516,"column":8},"end":{"line":516,"column":67}},"258":{"start":{"line":520,"column":8},"end":{"line":520,"column":63}},"259":{"start":{"line":524,"column":8},"end":{"line":524,"column":40}},"260":{"start":{"line":528,"column":8},"end":{"line":528,"column":96}},"261":{"start":{"line":532,"column":8},"end":{"line":534,"column":9}},"262":{"start":{"line":533,"column":12},"end":{"line":533,"column":55}},"263":{"start":{"line":535,"column":8},"end":{"line":535,"column":73}},"264":{"start":{"line":539,"column":8},"end":{"line":541,"column":9}},"265":{"start":{"line":540,"column":12},"end":{"line":540,"column":33}},"266":{"start":{"line":542,"column":8},"end":{"line":542,"column":45}},"267":{"start":{"line":546,"column":22},"end":{"line":546,"column":41}},"268":{"start":{"line":547,"column":8},"end":{"line":561,"column":11}},"269":{"start":{"line":548,"column":12},"end":{"line":559,"column":14}},"270":{"start":{"line":549,"column":16},"end":{"line":558,"column":17}},"271":{"start":{"line":550,"column":20},"end":{"line":555,"column":21}},"272":{"start":{"line":551,"column":24},"end":{"line":551,"column":92}},"273":{"start":{"line":552,"column":24},"end":{"line":552,"column":40}},"274":{"start":{"line":554,"column":24},"end":{"line":554,"column":95}},"275":{"start":{"line":557,"column":20},"end":{"line":557,"column":36}},"276":{"start":{"line":560,"column":12},"end":{"line":560,"column":48}},"277":{"start":{"line":565,"column":8},"end":{"line":565,"column":30}},"278":{"start":{"line":18,"column":0},"end":{"line":18,"column":13}}},"fnMap":{"0":{"name":"escape","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":22}},"loc":{"start":{"line":6,"column":34},"end":{"line":8,"column":1}}},"1":{"name":"isPlainOutput","decl":{"start":{"line":14,"column":9},"end":{"line":14,"column":22}},"loc":{"start":{"line":14,"column":35},"end":{"line":16,"column":1}}},"2":{"name":"(anonymous_18)","decl":{"start":{"line":29,"column":4},"end":{"line":29,"column":null}},"loc":{"start":{"line":31,"column":29},"end":{"line":34,"column":5}}},"3":{"name":"(anonymous_19)","decl":{"start":{"line":36,"column":4},"end":{"line":36,"column":11}},"loc":{"start":{"line":36,"column":43},"end":{"line":68,"column":5}}},"4":{"name":"(anonymous_20)","decl":{"start":{"line":37,"column":27},"end":{"line":37,"column":28}},"loc":{"start":{"line":37,"column":47},"end":{"line":67,"column":9}}},"5":{"name":"(anonymous_21)","decl":{"start":{"line":53,"column":37},"end":{"line":53,"column":40}},"loc":{"start":{"line":53,"column":42},"end":{"line":55,"column":13}}},"6":{"name":"(anonymous_22)","decl":{"start":{"line":56,"column":38},"end":{"line":56,"column":39}},"loc":{"start":{"line":56,"column":53},"end":{"line":58,"column":13}}},"7":{"name":"(anonymous_23)","decl":{"start":{"line":62,"column":32},"end":{"line":62,"column":33}},"loc":{"start":{"line":62,"column":41},"end":{"line":62,"column":62}}},"8":{"name":"(anonymous_24)","decl":{"start":{"line":64,"column":43},"end":{"line":64,"column":46}},"loc":{"start":{"line":64,"column":48},"end":{"line":66,"column":13}}},"9":{"name":"(anonymous_25)","decl":{"start":{"line":70,"column":4},"end":{"line":70,"column":10}},"loc":{"start":{"line":70,"column":20},"end":{"line":82,"column":5}}},"10":{"name":"(anonymous_26)","decl":{"start":{"line":84,"column":4},"end":{"line":84,"column":10}},"loc":{"start":{"line":84,"column":20},"end":{"line":95,"column":5}}},"11":{"name":"(anonymous_27)","decl":{"start":{"line":97,"column":4},"end":{"line":97,"column":18}},"loc":{"start":{"line":97,"column":33},"end":{"line":102,"column":5}}},"12":{"name":"(anonymous_28)","decl":{"start":{"line":99,"column":22},"end":{"line":99,"column":23}},"loc":{"start":{"line":99,"column":31},"end":{"line":101,"column":9}}},"13":{"name":"(anonymous_29)","decl":{"start":{"line":104,"column":4},"end":{"line":104,"column":19}},"loc":{"start":{"line":104,"column":32},"end":{"line":110,"column":5}}},"14":{"name":"(anonymous_30)","decl":{"start":{"line":112,"column":4},"end":{"line":112,"column":12}},"loc":{"start":{"line":112,"column":27},"end":{"line":209,"column":5}}},"15":{"name":"(anonymous_31)","decl":{"start":{"line":114,"column":22},"end":{"line":114,"column":23}},"loc":{"start":{"line":114,"column":31},"end":{"line":208,"column":9}}},"16":{"name":"(anonymous_32)","decl":{"start":{"line":138,"column":51},"end":{"line":138,"column":52}},"loc":{"start":{"line":138,"column":67},"end":{"line":196,"column":21}}},"17":{"name":"(anonymous_33)","decl":{"start":{"line":141,"column":68},"end":{"line":141,"column":71}},"loc":{"start":{"line":141,"column":73},"end":{"line":144,"column":33}}},"18":{"name":"(anonymous_34)","decl":{"start":{"line":145,"column":61},"end":{"line":145,"column":64}},"loc":{"start":{"line":145,"column":66},"end":{"line":150,"column":33}}},"19":{"name":"(anonymous_35)","decl":{"start":{"line":211,"column":4},"end":{"line":211,"column":8}},"loc":{"start":{"line":211,"column":35},"end":{"line":222,"column":5}}},"20":{"name":"(anonymous_36)","decl":{"start":{"line":214,"column":43},"end":{"line":214,"column":46}},"loc":{"start":{"line":214,"column":48},"end":{"line":216,"column":13}}},"21":{"name":"(anonymous_37)","decl":{"start":{"line":217,"column":36},"end":{"line":217,"column":37}},"loc":{"start":{"line":217,"column":50},"end":{"line":219,"column":13}}},"22":{"name":"(anonymous_38)","decl":{"start":{"line":224,"column":4},"end":{"line":224,"column":10}},"loc":{"start":{"line":224,"column":10},"end":{"line":233,"column":5}}},"23":{"name":"(anonymous_39)","decl":{"start":{"line":226,"column":39},"end":{"line":226,"column":42}},"loc":{"start":{"line":226,"column":44},"end":{"line":228,"column":9}}},"24":{"name":"(anonymous_40)","decl":{"start":{"line":229,"column":32},"end":{"line":229,"column":33}},"loc":{"start":{"line":229,"column":46},"end":{"line":231,"column":9}}},"25":{"name":"(anonymous_41)","decl":{"start":{"line":235,"column":4},"end":{"line":235,"column":13}},"loc":{"start":{"line":235,"column":30},"end":{"line":244,"column":5}}},"26":{"name":"(anonymous_42)","decl":{"start":{"line":236,"column":27},"end":{"line":236,"column":28}},"loc":{"start":{"line":236,"column":47},"end":{"line":243,"column":9}}},"27":{"name":"(anonymous_43)","decl":{"start":{"line":238,"column":16},"end":{"line":238,"column":17}},"loc":{"start":{"line":238,"column":27},"end":{"line":240,"column":17}}},"28":{"name":"(anonymous_44)","decl":{"start":{"line":246,"column":4},"end":{"line":246,"column":12}},"loc":{"start":{"line":246,"column":29},"end":{"line":255,"column":5}}},"29":{"name":"(anonymous_45)","decl":{"start":{"line":247,"column":27},"end":{"line":247,"column":28}},"loc":{"start":{"line":247,"column":47},"end":{"line":254,"column":9}}},"30":{"name":"(anonymous_46)","decl":{"start":{"line":249,"column":16},"end":{"line":249,"column":17}},"loc":{"start":{"line":249,"column":27},"end":{"line":251,"column":17}}},"31":{"name":"(anonymous_47)","decl":{"start":{"line":257,"column":4},"end":{"line":257,"column":8}},"loc":{"start":{"line":257,"column":47},"end":{"line":267,"column":5}}},"32":{"name":"(anonymous_48)","decl":{"start":{"line":258,"column":27},"end":{"line":258,"column":28}},"loc":{"start":{"line":258,"column":47},"end":{"line":266,"column":9}}},"33":{"name":"(anonymous_49)","decl":{"start":{"line":261,"column":16},"end":{"line":261,"column":17}},"loc":{"start":{"line":261,"column":27},"end":{"line":263,"column":17}}},"34":{"name":"(anonymous_50)","decl":{"start":{"line":269,"column":4},"end":{"line":269,"column":8}},"loc":{"start":{"line":269,"column":47},"end":{"line":279,"column":5}}},"35":{"name":"(anonymous_51)","decl":{"start":{"line":270,"column":27},"end":{"line":270,"column":28}},"loc":{"start":{"line":270,"column":47},"end":{"line":278,"column":9}}},"36":{"name":"(anonymous_52)","decl":{"start":{"line":273,"column":16},"end":{"line":273,"column":17}},"loc":{"start":{"line":273,"column":27},"end":{"line":275,"column":17}}},"37":{"name":"(anonymous_53)","decl":{"start":{"line":281,"column":4},"end":{"line":281,"column":11}},"loc":{"start":{"line":281,"column":28},"end":{"line":290,"column":5}}},"38":{"name":"(anonymous_54)","decl":{"start":{"line":282,"column":27},"end":{"line":282,"column":28}},"loc":{"start":{"line":282,"column":47},"end":{"line":289,"column":9}}},"39":{"name":"(anonymous_55)","decl":{"start":{"line":284,"column":16},"end":{"line":284,"column":17}},"loc":{"start":{"line":284,"column":27},"end":{"line":286,"column":17}}},"40":{"name":"(anonymous_56)","decl":{"start":{"line":292,"column":4},"end":{"line":292,"column":11}},"loc":{"start":{"line":292,"column":30},"end":{"line":294,"column":5}}},"41":{"name":"(anonymous_57)","decl":{"start":{"line":296,"column":4},"end":{"line":296,"column":24}},"loc":{"start":{"line":296,"column":43},"end":{"line":313,"column":5}}},"42":{"name":"(anonymous_58)","decl":{"start":{"line":297,"column":27},"end":{"line":297,"column":28}},"loc":{"start":{"line":297,"column":47},"end":{"line":312,"column":9}}},"43":{"name":"(anonymous_59)","decl":{"start":{"line":298,"column":33},"end":{"line":298,"column":34}},"loc":{"start":{"line":298,"column":57},"end":{"line":310,"column":13}}},"44":{"name":"(anonymous_60)","decl":{"start":{"line":305,"column":20},"end":{"line":305,"column":21}},"loc":{"start":{"line":305,"column":31},"end":{"line":307,"column":21}}},"45":{"name":"(anonymous_61)","decl":{"start":{"line":315,"column":4},"end":{"line":315,"column":18}},"loc":{"start":{"line":315,"column":49},"end":{"line":317,"column":5}}},"46":{"name":"(anonymous_62)","decl":{"start":{"line":319,"column":4},"end":{"line":319,"column":26}},"loc":{"start":{"line":319,"column":70},"end":{"line":321,"column":5}}},"47":{"name":"(anonymous_63)","decl":{"start":{"line":323,"column":4},"end":{"line":323,"column":17}},"loc":{"start":{"line":323,"column":33},"end":{"line":378,"column":5}}},"48":{"name":"(anonymous_64)","decl":{"start":{"line":324,"column":27},"end":{"line":324,"column":28}},"loc":{"start":{"line":324,"column":47},"end":{"line":377,"column":9}}},"49":{"name":"(anonymous_65)","decl":{"start":{"line":353,"column":16},"end":{"line":353,"column":17}},"loc":{"start":{"line":353,"column":27},"end":{"line":374,"column":17}}},"50":{"name":"(anonymous_66)","decl":{"start":{"line":359,"column":32},"end":{"line":359,"column":33}},"loc":{"start":{"line":359,"column":47},"end":{"line":365,"column":33}}},"51":{"name":"(anonymous_67)","decl":{"start":{"line":380,"column":4},"end":{"line":380,"column":21}},"loc":{"start":{"line":380,"column":49},"end":{"line":394,"column":5}}},"52":{"name":"(anonymous_68)","decl":{"start":{"line":381,"column":27},"end":{"line":381,"column":28}},"loc":{"start":{"line":381,"column":47},"end":{"line":393,"column":9}}},"53":{"name":"(anonymous_69)","decl":{"start":{"line":387,"column":20},"end":{"line":387,"column":21}},"loc":{"start":{"line":387,"column":31},"end":{"line":389,"column":21}}},"54":{"name":"(anonymous_70)","decl":{"start":{"line":396,"column":4},"end":{"line":396,"column":12}},"loc":{"start":{"line":396,"column":49},"end":{"line":424,"column":5}}},"55":{"name":"(anonymous_71)","decl":{"start":{"line":397,"column":27},"end":{"line":397,"column":28}},"loc":{"start":{"line":397,"column":47},"end":{"line":423,"column":9}}},"56":{"name":"(anonymous_72)","decl":{"start":{"line":400,"column":16},"end":{"line":400,"column":17}},"loc":{"start":{"line":400,"column":27},"end":{"line":420,"column":17}}},"57":{"name":"(anonymous_73)","decl":{"start":{"line":426,"column":4},"end":{"line":426,"column":12}},"loc":{"start":{"line":426,"column":65},"end":{"line":458,"column":5}}},"58":{"name":"(anonymous_74)","decl":{"start":{"line":427,"column":27},"end":{"line":427,"column":28}},"loc":{"start":{"line":427,"column":47},"end":{"line":457,"column":9}}},"59":{"name":"(anonymous_75)","decl":{"start":{"line":429,"column":16},"end":{"line":429,"column":17}},"loc":{"start":{"line":429,"column":27},"end":{"line":454,"column":17}}},"60":{"name":"(anonymous_76)","decl":{"start":{"line":432,"column":34},"end":{"line":432,"column":35}},"loc":{"start":{"line":432,"column":49},"end":{"line":452,"column":21}}},"61":{"name":"(anonymous_77)","decl":{"start":{"line":460,"column":10},"end":{"line":460,"column":27}},"loc":{"start":{"line":460,"column":64},"end":{"line":473,"column":null}}},"62":{"name":"(anonymous_79)","decl":{"start":{"line":475,"column":10},"end":{"line":475,"column":23}},"loc":{"start":{"line":475,"column":55},"end":{"line":488,"column":null}}},"63":{"name":"(anonymous_81)","decl":{"start":{"line":490,"column":4},"end":{"line":490,"column":18}},"loc":{"start":{"line":490,"column":37},"end":{"line":499,"column":5}}},"64":{"name":"(anonymous_82)","decl":{"start":{"line":491,"column":27},"end":{"line":491,"column":28}},"loc":{"start":{"line":491,"column":47},"end":{"line":498,"column":9}}},"65":{"name":"(anonymous_83)","decl":{"start":{"line":493,"column":16},"end":{"line":493,"column":17}},"loc":{"start":{"line":493,"column":27},"end":{"line":495,"column":17}}},"66":{"name":"(anonymous_84)","decl":{"start":{"line":501,"column":10},"end":{"line":501,"column":19}},"loc":{"start":{"line":501,"column":19},"end":{"line":504,"column":null}}},"67":{"name":"(anonymous_85)","decl":{"start":{"line":501,"column":20},"end":{"line":501,"column":38}},"loc":{"start":{"line":501,"column":58},"end":{"line":504,"column":5}}},"68":{"name":"(anonymous_86)","decl":{"start":{"line":506,"column":10},"end":{"line":506,"column":27}},"loc":{"start":{"line":506,"column":40},"end":{"line":508,"column":null}}},"69":{"name":"(anonymous_88)","decl":{"start":{"line":510,"column":10},"end":{"line":510,"column":25}},"loc":{"start":{"line":510,"column":38},"end":{"line":513,"column":null}}},"70":{"name":"(anonymous_90)","decl":{"start":{"line":512,"column":53},"end":{"line":512,"column":54}},"loc":{"start":{"line":512,"column":69},"end":{"line":512,"column":97}}},"71":{"name":"(anonymous_91)","decl":{"start":{"line":515,"column":10},"end":{"line":515,"column":19}},"loc":{"start":{"line":515,"column":19},"end":{"line":517,"column":null}}},"72":{"name":"(anonymous_92)","decl":{"start":{"line":515,"column":20},"end":{"line":515,"column":35}},"loc":{"start":{"line":515,"column":38},"end":{"line":517,"column":5}}},"73":{"name":"(anonymous_93)","decl":{"start":{"line":519,"column":10},"end":{"line":519,"column":19}},"loc":{"start":{"line":519,"column":47},"end":{"line":521,"column":null}}},"74":{"name":"(anonymous_95)","decl":{"start":{"line":523,"column":4},"end":{"line":523,"column":16}},"loc":{"start":{"line":523,"column":46},"end":{"line":525,"column":5}}},"75":{"name":"(anonymous_96)","decl":{"start":{"line":527,"column":4},"end":{"line":527,"column":7}},"loc":{"start":{"line":527,"column":37},"end":{"line":529,"column":5}}},"76":{"name":"(anonymous_97)","decl":{"start":{"line":531,"column":4},"end":{"line":531,"column":17}},"loc":{"start":{"line":531,"column":33},"end":{"line":536,"column":5}}},"77":{"name":"(anonymous_98)","decl":{"start":{"line":538,"column":4},"end":{"line":538,"column":11}},"loc":{"start":{"line":538,"column":23},"end":{"line":543,"column":5}}},"78":{"name":"(anonymous_99)","decl":{"start":{"line":545,"column":4},"end":{"line":545,"column":15}},"loc":{"start":{"line":545,"column":64},"end":{"line":562,"column":5}}},"79":{"name":"(anonymous_100)","decl":{"start":{"line":547,"column":27},"end":{"line":547,"column":28}},"loc":{"start":{"line":547,"column":47},"end":{"line":561,"column":9}}},"80":{"name":"(anonymous_101)","decl":{"start":{"line":548,"column":35},"end":{"line":548,"column":36}},"loc":{"start":{"line":548,"column":54},"end":{"line":559,"column":13}}},"81":{"name":"(anonymous_102)","decl":{"start":{"line":564,"column":4},"end":{"line":564,"column":11}},"loc":{"start":{"line":564,"column":11},"end":{"line":566,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":40,"column":12},"end":{"line":43,"column":13}},"type":"if","locations":[{"start":{"line":40,"column":12},"end":{"line":43,"column":13}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":71,"column":23},"end":{"line":71,"column":78}},"type":"cond-expr","locations":[{"start":{"line":71,"column":50},"end":{"line":71,"column":54}},{"start":{"line":71,"column":57},"end":{"line":71,"column":78}}]},"2":{"loc":{"start":{"line":73,"column":8},"end":{"line":76,"column":9}},"type":"if","locations":[{"start":{"line":73,"column":8},"end":{"line":76,"column":9}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":77,"column":8},"end":{"line":81,"column":9}},"type":"if","locations":[{"start":{"line":77,"column":8},"end":{"line":81,"column":9}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":78,"column":12},"end":{"line":80,"column":13}},"type":"if","locations":[{"start":{"line":78,"column":12},"end":{"line":80,"column":13}},{"start":{},"end":{}}]},"5":{"loc":{"start":{"line":85,"column":23},"end":{"line":85,"column":78}},"type":"cond-expr","locations":[{"start":{"line":85,"column":50},"end":{"line":85,"column":54}},{"start":{"line":85,"column":57},"end":{"line":85,"column":78}}]},"6":{"loc":{"start":{"line":87,"column":8},"end":{"line":90,"column":9}},"type":"if","locations":[{"start":{"line":87,"column":8},"end":{"line":90,"column":9}},{"start":{},"end":{}}]},"7":{"loc":{"start":{"line":91,"column":8},"end":{"line":94,"column":9}},"type":"if","locations":[{"start":{"line":91,"column":8},"end":{"line":94,"column":9}},{"start":{},"end":{}}]},"8":{"loc":{"start":{"line":105,"column":8},"end":{"line":108,"column":9}},"type":"if","locations":[{"start":{"line":105,"column":8},"end":{"line":108,"column":9}},{"start":{},"end":{}}]},"9":{"loc":{"start":{"line":115,"column":12},"end":{"line":207,"column":13}},"type":"if","locations":[{"start":{"line":115,"column":12},"end":{"line":207,"column":13}},{"start":{"line":119,"column":19},"end":{"line":207,"column":13}}]},"10":{"loc":{"start":{"line":116,"column":16},"end":{"line":118,"column":17}},"type":"if","locations":[{"start":{"line":116,"column":16},"end":{"line":118,"column":17}},{"start":{},"end":{}}]},"11":{"loc":{"start":{"line":121,"column":16},"end":{"line":123,"column":17}},"type":"if","locations":[{"start":{"line":121,"column":16},"end":{"line":123,"column":17}},{"start":{},"end":{}}]},"12":{"loc":{"start":{"line":127,"column":16},"end":{"line":131,"column":17}},"type":"if","locations":[{"start":{"line":127,"column":16},"end":{"line":131,"column":17}},{"start":{},"end":{}}]},"13":{"loc":{"start":{"line":127,"column":20},"end":{"line":127,"column":77}},"type":"binary-expr","locations":[{"start":{"line":127,"column":20},"end":{"line":127,"column":46}},{"start":{"line":127,"column":50},"end":{"line":127,"column":77}}]},"14":{"loc":{"start":{"line":133,"column":16},"end":{"line":135,"column":17}},"type":"if","locations":[{"start":{"line":133,"column":16},"end":{"line":135,"column":17}},{"start":{},"end":{}}]},"15":{"loc":{"start":{"line":133,"column":20},"end":{"line":133,"column":100}},"type":"binary-expr","locations":[{"start":{"line":133,"column":20},"end":{"line":133,"column":28}},{"start":{"line":133,"column":32},"end":{"line":133,"column":52}},{"start":{"line":133,"column":56},"end":{"line":133,"column":100}}]},"16":{"loc":{"start":{"line":134,"column":39},"end":{"line":134,"column":67}},"type":"binary-expr","locations":[{"start":{"line":134,"column":39},"end":{"line":134,"column":59}},{"start":{"line":134,"column":63},"end":{"line":134,"column":67}}]},"17":{"loc":{"start":{"line":137,"column":16},"end":{"line":198,"column":17}},"type":"if","locations":[{"start":{"line":137,"column":16},"end":{"line":198,"column":17}},{"start":{},"end":{}}]},"18":{"loc":{"start":{"line":139,"column":24},"end":{"line":195,"column":25}},"type":"if","locations":[{"start":{"line":139,"column":24},"end":{"line":195,"column":25}},{"start":{"line":153,"column":31},"end":{"line":195,"column":25}}]},"19":{"loc":{"start":{"line":140,"column":28},"end":{"line":151,"column":29}},"type":"if","locations":[{"start":{"line":140,"column":28},"end":{"line":151,"column":29}},{"start":{},"end":{}}]},"20":{"loc":{"start":{"line":146,"column":36},"end":{"line":149,"column":37}},"type":"if","locations":[{"start":{"line":146,"column":36},"end":{"line":149,"column":37}},{"start":{},"end":{}}]},"21":{"loc":{"start":{"line":153,"column":31},"end":{"line":195,"column":25}},"type":"if","locations":[{"start":{"line":153,"column":31},"end":{"line":195,"column":25}},{"start":{"line":182,"column":31},"end":{"line":195,"column":25}}]},"22":{"loc":{"start":{"line":155,"column":28},"end":{"line":181,"column":29}},"type":"if","locations":[{"start":{"line":155,"column":28},"end":{"line":181,"column":29}},{"start":{"line":157,"column":35},"end":{"line":181,"column":29}}]},"23":{"loc":{"start":{"line":157,"column":35},"end":{"line":181,"column":29}},"type":"if","locations":[{"start":{"line":157,"column":35},"end":{"line":181,"column":29}},{"start":{"line":179,"column":35},"end":{"line":181,"column":29}}]},"24":{"loc":{"start":{"line":159,"column":32},"end":{"line":177,"column":33}},"type":"if","locations":[{"start":{"line":159,"column":32},"end":{"line":177,"column":33}},{"start":{"line":161,"column":39},"end":{"line":177,"column":33}}]},"25":{"loc":{"start":{"line":161,"column":39},"end":{"line":177,"column":33}},"type":"if","locations":[{"start":{"line":161,"column":39},"end":{"line":177,"column":33}},{"start":{"line":163,"column":39},"end":{"line":177,"column":33}}]},"26":{"loc":{"start":{"line":163,"column":39},"end":{"line":177,"column":33}},"type":"if","locations":[{"start":{"line":163,"column":39},"end":{"line":177,"column":33}},{"start":{"line":165,"column":39},"end":{"line":177,"column":33}}]},"27":{"loc":{"start":{"line":165,"column":39},"end":{"line":177,"column":33}},"type":"if","locations":[{"start":{"line":165,"column":39},"end":{"line":177,"column":33}},{"start":{"line":167,"column":39},"end":{"line":177,"column":33}}]},"28":{"loc":{"start":{"line":167,"column":39},"end":{"line":177,"column":33}},"type":"if","locations":[{"start":{"line":167,"column":39},"end":{"line":177,"column":33}},{"start":{"line":169,"column":39},"end":{"line":177,"column":33}}]},"29":{"loc":{"start":{"line":169,"column":39},"end":{"line":177,"column":33}},"type":"if","locations":[{"start":{"line":169,"column":39},"end":{"line":177,"column":33}},{"start":{"line":172,"column":39},"end":{"line":177,"column":33}}]},"30":{"loc":{"start":{"line":173,"column":36},"end":{"line":175,"column":37}},"type":"if","locations":[{"start":{"line":173,"column":36},"end":{"line":175,"column":37}},{"start":{},"end":{}}]},"31":{"loc":{"start":{"line":182,"column":31},"end":{"line":195,"column":25}},"type":"if","locations":[{"start":{"line":182,"column":31},"end":{"line":195,"column":25}},{"start":{},"end":{}}]},"32":{"loc":{"start":{"line":183,"column":28},"end":{"line":194,"column":29}},"type":"if","locations":[{"start":{"line":183,"column":28},"end":{"line":194,"column":29}},{"start":{"line":187,"column":35},"end":{"line":194,"column":29}}]},"33":{"loc":{"start":{"line":187,"column":35},"end":{"line":194,"column":29}},"type":"if","locations":[{"start":{"line":187,"column":35},"end":{"line":194,"column":29}},{"start":{"line":191,"column":35},"end":{"line":194,"column":29}}]},"34":{"loc":{"start":{"line":191,"column":35},"end":{"line":194,"column":29}},"type":"if","locations":[{"start":{"line":191,"column":35},"end":{"line":194,"column":29}},{"start":{},"end":{}}]},"35":{"loc":{"start":{"line":200,"column":16},"end":{"line":202,"column":17}},"type":"if","locations":[{"start":{"line":200,"column":16},"end":{"line":202,"column":17}},{"start":{},"end":{}}]},"36":{"loc":{"start":{"line":200,"column":20},"end":{"line":200,"column":123}},"type":"binary-expr","locations":[{"start":{"line":200,"column":20},"end":{"line":200,"column":46}},{"start":{"line":200,"column":50},"end":{"line":200,"column":84}},{"start":{"line":200,"column":88},"end":{"line":200,"column":123}}]},"37":{"loc":{"start":{"line":204,"column":16},"end":{"line":206,"column":17}},"type":"if","locations":[{"start":{"line":204,"column":16},"end":{"line":206,"column":17}},{"start":{},"end":{}}]},"38":{"loc":{"start":{"line":211,"column":9},"end":{"line":211,"column":35}},"type":"default-arg","locations":[{"start":{"line":211,"column":30},"end":{"line":211,"column":35}}]},"39":{"loc":{"start":{"line":212,"column":8},"end":{"line":220,"column":9}},"type":"if","locations":[{"start":{"line":212,"column":8},"end":{"line":220,"column":9}},{"start":{},"end":{}}]},"40":{"loc":{"start":{"line":259,"column":28},"end":{"line":259,"column":79}},"type":"cond-expr","locations":[{"start":{"line":259,"column":42},"end":{"line":259,"column":65}},{"start":{"line":259,"column":68},"end":{"line":259,"column":79}}]},"41":{"loc":{"start":{"line":271,"column":28},"end":{"line":271,"column":79}},"type":"cond-expr","locations":[{"start":{"line":271,"column":42},"end":{"line":271,"column":65}},{"start":{"line":271,"column":68},"end":{"line":271,"column":79}}]},"42":{"loc":{"start":{"line":299,"column":16},"end":{"line":302,"column":17}},"type":"if","locations":[{"start":{"line":299,"column":16},"end":{"line":302,"column":17}},{"start":{},"end":{}}]},"43":{"loc":{"start":{"line":327,"column":12},"end":{"line":344,"column":13}},"type":"if","locations":[{"start":{"line":327,"column":12},"end":{"line":344,"column":13}},{"start":{},"end":{}}]},"44":{"loc":{"start":{"line":328,"column":16},"end":{"line":343,"column":17}},"type":"if","locations":[{"start":{"line":328,"column":16},"end":{"line":343,"column":17}},{"start":{"line":330,"column":23},"end":{"line":343,"column":17}}]},"45":{"loc":{"start":{"line":332,"column":20},"end":{"line":342,"column":21}},"type":"if","locations":[{"start":{"line":332,"column":20},"end":{"line":342,"column":21}},{"start":{"line":340,"column":27},"end":{"line":342,"column":21}}]},"46":{"loc":{"start":{"line":340,"column":27},"end":{"line":342,"column":21}},"type":"if","locations":[{"start":{"line":340,"column":27},"end":{"line":342,"column":21}},{"start":{},"end":{}}]},"47":{"loc":{"start":{"line":346,"column":12},"end":{"line":350,"column":13}},"type":"if","locations":[{"start":{"line":346,"column":12},"end":{"line":350,"column":13}},{"start":{"line":348,"column":19},"end":{"line":350,"column":13}}]},"48":{"loc":{"start":{"line":354,"column":20},"end":{"line":373,"column":21}},"type":"if","locations":[{"start":{"line":354,"column":20},"end":{"line":373,"column":21}},{"start":{"line":371,"column":27},"end":{"line":373,"column":21}}]},"49":{"loc":{"start":{"line":357,"column":24},"end":{"line":370,"column":25}},"type":"if","locations":[{"start":{"line":357,"column":24},"end":{"line":370,"column":25}},{"start":{"line":368,"column":31},"end":{"line":370,"column":25}}]},"50":{"loc":{"start":{"line":360,"column":36},"end":{"line":364,"column":37}},"type":"if","locations":[{"start":{"line":360,"column":36},"end":{"line":364,"column":37}},{"start":{"line":362,"column":43},"end":{"line":364,"column":37}}]},"51":{"loc":{"start":{"line":382,"column":12},"end":{"line":392,"column":13}},"type":"if","locations":[{"start":{"line":382,"column":12},"end":{"line":392,"column":13}},{"start":{"line":384,"column":19},"end":{"line":392,"column":13}}]},"52":{"loc":{"start":{"line":409,"column":20},"end":{"line":411,"column":21}},"type":"if","locations":[{"start":{"line":409,"column":20},"end":{"line":411,"column":21}},{"start":{},"end":{}}]},"53":{"loc":{"start":{"line":440,"column":24},"end":{"line":442,"column":25}},"type":"if","locations":[{"start":{"line":440,"column":24},"end":{"line":442,"column":25}},{"start":{},"end":{}}]},"54":{"loc":{"start":{"line":448,"column":38},"end":{"line":448,"column":50}},"type":"binary-expr","locations":[{"start":{"line":448,"column":38},"end":{"line":448,"column":42}},{"start":{"line":448,"column":46},"end":{"line":448,"column":50}}]},"55":{"loc":{"start":{"line":479,"column":30},"end":{"line":479,"column":59}},"type":"cond-expr","locations":[{"start":{"line":479,"column":46},"end":{"line":479,"column":50}},{"start":{"line":479,"column":53},"end":{"line":479,"column":59}}]},"56":{"loc":{"start":{"line":501,"column":40},"end":{"line":501,"column":58}},"type":"default-arg","locations":[{"start":{"line":501,"column":55},"end":{"line":501,"column":58}}]},"57":{"loc":{"start":{"line":512,"column":16},"end":{"line":512,"column":47}},"type":"binary-expr","locations":[{"start":{"line":512,"column":16},"end":{"line":512,"column":41}},{"start":{"line":512,"column":45},"end":{"line":512,"column":47}}]},"58":{"loc":{"start":{"line":515,"column":20},"end":{"line":515,"column":38}},"type":"default-arg","locations":[{"start":{"line":515,"column":35},"end":{"line":515,"column":38}}]},"59":{"loc":{"start":{"line":528,"column":31},"end":{"line":528,"column":94}},"type":"cond-expr","locations":[{"start":{"line":528,"column":70},"end":{"line":528,"column":77}},{"start":{"line":528,"column":80},"end":{"line":528,"column":94}}]},"60":{"loc":{"start":{"line":532,"column":8},"end":{"line":534,"column":9}},"type":"if","locations":[{"start":{"line":532,"column":8},"end":{"line":534,"column":9}},{"start":{},"end":{}}]},"61":{"loc":{"start":{"line":539,"column":8},"end":{"line":541,"column":9}},"type":"if","locations":[{"start":{"line":539,"column":8},"end":{"line":541,"column":9}},{"start":{},"end":{}}]},"62":{"loc":{"start":{"line":545,"column":33},"end":{"line":545,"column":64}},"type":"default-arg","locations":[{"start":{"line":545,"column":59},"end":{"line":545,"column":64}}]},"63":{"loc":{"start":{"line":549,"column":16},"end":{"line":558,"column":17}},"type":"if","locations":[{"start":{"line":549,"column":16},"end":{"line":558,"column":17}},{"start":{"line":556,"column":23},"end":{"line":558,"column":17}}]},"64":{"loc":{"start":{"line":549,"column":20},"end":{"line":549,"column":98}},"type":"binary-expr","locations":[{"start":{"line":549,"column":20},"end":{"line":549,"column":26}},{"start":{"line":549,"column":30},"end":{"line":549,"column":50}},{"start":{"line":549,"column":54},"end":{"line":549,"column":98}}]},"65":{"loc":{"start":{"line":550,"column":20},"end":{"line":555,"column":21}},"type":"if","locations":[{"start":{"line":550,"column":20},"end":{"line":555,"column":21}},{"start":{"line":553,"column":27},"end":{"line":555,"column":21}}]},"66":{"loc":{"start":{"line":554,"column":43},"end":{"line":554,"column":83}},"type":"binary-expr","locations":[{"start":{"line":554,"column":43},"end":{"line":554,"column":63}},{"start":{"line":554,"column":67},"end":{"line":554,"column":83}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0,0],"37":[0,0],"38":[0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0],"57":[0,0],"58":[0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0],"63":[0,0],"64":[0,0,0],"65":[0,0],"66":[0,0]}} +,"/home/jailuser/git/src/backend/mi2/types.ts": {"path":"/home/jailuser/git/src/backend/mi2/types.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}},"1":{"start":{"line":18,"column":8},"end":{"line":18,"column":49}},"2":{"start":{"line":19,"column":8},"end":{"line":19,"column":47}},"3":{"start":{"line":20,"column":8},"end":{"line":20,"column":67}},"4":{"start":{"line":21,"column":8},"end":{"line":21,"column":49}},"5":{"start":{"line":22,"column":8},"end":{"line":22,"column":51}},"6":{"start":{"line":23,"column":8},"end":{"line":23,"column":58}},"7":{"start":{"line":24,"column":8},"end":{"line":24,"column":55}},"8":{"start":{"line":25,"column":8},"end":{"line":25,"column":57}},"9":{"start":{"line":26,"column":8},"end":{"line":26,"column":63}},"10":{"start":{"line":27,"column":8},"end":{"line":27,"column":58}},"11":{"start":{"line":31,"column":8},"end":{"line":31,"column":51}},"12":{"start":{"line":32,"column":8},"end":{"line":34,"column":9}},"13":{"start":{"line":33,"column":12},"end":{"line":33,"column":57}},"14":{"start":{"line":35,"column":8},"end":{"line":35,"column":57}},"15":{"start":{"line":36,"column":8},"end":{"line":36,"column":63}},"16":{"start":{"line":37,"column":8},"end":{"line":37,"column":58}},"17":{"start":{"line":41,"column":8},"end":{"line":45,"column":10}},"18":{"start":{"line":49,"column":8},"end":{"line":56,"column":10}},"19":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}},"20":{"start":{"line":65,"column":8},"end":{"line":67,"column":11}},"21":{"start":{"line":66,"column":23},"end":{"line":66,"column":44}},"22":{"start":{"line":68,"column":8},"end":{"line":70,"column":11}},"23":{"start":{"line":69,"column":23},"end":{"line":69,"column":30}},"24":{"start":{"line":71,"column":8},"end":{"line":73,"column":11}},"25":{"start":{"line":72,"column":23},"end":{"line":72,"column":29}},"26":{"start":{"line":74,"column":8},"end":{"line":74,"column":56}},"27":{"start":{"line":78,"column":8},"end":{"line":78,"column":73}},"28":{"start":{"line":60,"column":0},"end":{"line":60,"column":13}},"29":{"start":{"line":82,"column":0},"end":{"line":82,"column":63}},"30":{"start":{"line":83,"column":1},"end":{"line":83,"column":49}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":16}},"loc":{"start":{"line":17,"column":25},"end":{"line":28,"column":5}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":30,"column":4},"end":{"line":30,"column":16}},"loc":{"start":{"line":30,"column":26},"end":{"line":38,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":40,"column":4},"end":{"line":40,"column":14}},"loc":{"start":{"line":40,"column":14},"end":{"line":46,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":48,"column":4},"end":{"line":48,"column":22}},"loc":{"start":{"line":48,"column":22},"end":{"line":57,"column":5}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":64,"column":4},"end":{"line":64,"column":16}},"loc":{"start":{"line":64,"column":47},"end":{"line":75,"column":5}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":66,"column":17},"end":{"line":66,"column":20}},"loc":{"start":{"line":66,"column":23},"end":{"line":66,"column":44}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":69,"column":17},"end":{"line":69,"column":20}},"loc":{"start":{"line":69,"column":23},"end":{"line":69,"column":30}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":72,"column":17},"end":{"line":72,"column":20}},"loc":{"start":{"line":72,"column":23},"end":{"line":72,"column":29}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":77,"column":4},"end":{"line":77,"column":12}},"loc":{"start":{"line":77,"column":12},"end":{"line":79,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":8},"end":{"line":34,"column":9}},"type":"if","locations":[{"start":{"line":32,"column":8},"end":{"line":34,"column":9}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":42,"column":12},"end":{"line":44,"column":90}},"type":"binary-expr","locations":[{"start":{"line":42,"column":12},"end":{"line":42,"column":29}},{"start":{"line":43,"column":12},"end":{"line":43,"column":34}},{"start":{"line":44,"column":13},"end":{"line":44,"column":25}},{"start":{"line":44,"column":30},"end":{"line":44,"column":58}},{"start":{"line":44,"column":62},"end":{"line":44,"column":88}}]},"2":{"loc":{"start":{"line":51,"column":26},"end":{"line":51,"column":50}},"type":"binary-expr","locations":[{"start":{"line":51,"column":26},"end":{"line":51,"column":38}},{"start":{"line":51,"column":42},"end":{"line":51,"column":50}}]},"3":{"loc":{"start":{"line":52,"column":19},"end":{"line":52,"column":70}},"type":"cond-expr","locations":[{"start":{"line":52,"column":46},"end":{"line":52,"column":57}},{"start":{"line":52,"column":60},"end":{"line":52,"column":70}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"b":{"0":[0,0],"1":[0,0,0,0,0],"2":[0,0],"3":[0,0]}} +,"/home/jailuser/git/src/frontend/configprovider.ts": {"path":"/home/jailuser/git/src/frontend/configprovider.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":11,"column":9},"end":{"line":11,"column":85}},"2":{"start":{"line":12,"column":8},"end":{"line":12,"column":22}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}}},"fnMap":{"0":{"name":"(anonymous_16)","decl":{"start":{"line":4,"column":4},"end":{"line":4,"column":19}},"loc":{"start":{"line":4,"column":4},"end":{"line":4,"column":20}}},"1":{"name":"(anonymous_17)","decl":{"start":{"line":6,"column":10},"end":{"line":6,"column":35}},"loc":{"start":{"line":9,"column":40},"end":{"line":13,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":30},"end":{"line":11,"column":84}},"type":"cond-expr","locations":[{"start":{"line":11,"column":39},"end":{"line":11,"column":56}},{"start":{"line":11,"column":59},"end":{"line":11,"column":84}}]}},"s":{"0":0,"1":0,"2":0,"3":0},"f":{"0":0,"1":0},"b":{"0":[0,0]}} +,"/home/jailuser/git/src/frontend/disassembly_content_provider.ts": {"path":"/home/jailuser/git/src/frontend/disassembly_content_provider.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":38}},"2":{"start":{"line":6,"column":8},"end":{"line":24,"column":11}},"3":{"start":{"line":7,"column":27},"end":{"line":7,"column":48}},"4":{"start":{"line":8,"column":12},"end":{"line":23,"column":18}},"5":{"start":{"line":12,"column":45},"end":{"line":12,"column":64}},"6":{"start":{"line":13,"column":37},"end":{"line":13,"column":39}},"7":{"start":{"line":14,"column":24},"end":{"line":16,"column":27}},"8":{"start":{"line":15,"column":28},"end":{"line":15,"column":135}},"9":{"start":{"line":17,"column":24},"end":{"line":17,"column":40}},"10":{"start":{"line":20,"column":24},"end":{"line":20,"column":70}},"11":{"start":{"line":21,"column":24},"end":{"line":21,"column":46}},"12":{"start":{"line":28,"column":8},"end":{"line":30,"column":9}},"13":{"start":{"line":28,"column":21},"end":{"line":28,"column":31}},"14":{"start":{"line":29,"column":12},"end":{"line":29,"column":23}},"15":{"start":{"line":31,"column":8},"end":{"line":31,"column":19}},"16":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}}},"fnMap":{"0":{"name":"(anonymous_9)","decl":{"start":{"line":5,"column":4},"end":{"line":5,"column":30}},"loc":{"start":{"line":5,"column":79},"end":{"line":25,"column":5}}},"1":{"name":"(anonymous_10)","decl":{"start":{"line":6,"column":27},"end":{"line":6,"column":28}},"loc":{"start":{"line":6,"column":47},"end":{"line":24,"column":9}}},"2":{"name":"(anonymous_11)","decl":{"start":{"line":11,"column":20},"end":{"line":11,"column":21}},"loc":{"start":{"line":11,"column":36},"end":{"line":18,"column":21}}},"3":{"name":"(anonymous_12)","decl":{"start":{"line":14,"column":45},"end":{"line":14,"column":46}},"loc":{"start":{"line":14,"column":66},"end":{"line":16,"column":25}}},"4":{"name":"(anonymous_13)","decl":{"start":{"line":19,"column":20},"end":{"line":19,"column":21}},"loc":{"start":{"line":19,"column":35},"end":{"line":22,"column":21}}},"5":{"name":"(anonymous_14)","decl":{"start":{"line":27,"column":12},"end":{"line":27,"column":18}},"loc":{"start":{"line":27,"column":52},"end":{"line":32,"column":5}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{}} +,"/home/jailuser/git/src/frontend/disassembly_tree_provider.ts": {"path":"/home/jailuser/git/src/frontend/disassembly_tree_provider.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":4,"column":12},"end":{"line":4,"column":67}},"2":{"start":{"line":5,"column":11},"end":{"line":5,"column":65}},"3":{"start":{"line":6,"column":12},"end":{"line":6,"column":36}},"4":{"start":{"line":9,"column":8},"end":{"line":9,"column":41}},"5":{"start":{"line":13,"column":8},"end":{"line":15,"column":9}},"6":{"start":{"line":14,"column":12},"end":{"line":14,"column":22}},"7":{"start":{"line":17,"column":32},"end":{"line":17,"column":75}},"8":{"start":{"line":18,"column":8},"end":{"line":21,"column":10}},"9":{"start":{"line":23,"column":28},"end":{"line":23,"column":78}},"10":{"start":{"line":24,"column":27},"end":{"line":24,"column":59}},"11":{"start":{"line":25,"column":8},"end":{"line":29,"column":10}},"12":{"start":{"line":31,"column":8},"end":{"line":31,"column":45}},"13":{"start":{"line":35,"column":8},"end":{"line":35,"column":23}},"14":{"start":{"line":39,"column":8},"end":{"line":39,"column":29}},"15":{"start":{"line":40,"column":8},"end":{"line":40,"column":23}},"16":{"start":{"line":44,"column":8},"end":{"line":44,"column":23}},"17":{"start":{"line":48,"column":8},"end":{"line":48,"column":38}},"18":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}}},"fnMap":{"0":{"name":"(anonymous_9)","decl":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}},"loc":{"start":{"line":3,"column":0},"end":{"line":50,"column":1}}},"1":{"name":"(anonymous_10)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":11}},"loc":{"start":{"line":8,"column":11},"end":{"line":10,"column":5}}},"2":{"name":"(anonymous_11)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":15}},"loc":{"start":{"line":12,"column":41},"end":{"line":32,"column":5}}},"3":{"name":"(anonymous_12)","decl":{"start":{"line":34,"column":4},"end":{"line":34,"column":15}},"loc":{"start":{"line":34,"column":40},"end":{"line":36,"column":5}}},"4":{"name":"(anonymous_13)","decl":{"start":{"line":38,"column":4},"end":{"line":38,"column":21}},"loc":{"start":{"line":38,"column":37},"end":{"line":41,"column":5}}},"5":{"name":"(anonymous_14)","decl":{"start":{"line":43,"column":4},"end":{"line":43,"column":23}},"loc":{"start":{"line":43,"column":23},"end":{"line":45,"column":5}}},"6":{"name":"(anonymous_15)","decl":{"start":{"line":47,"column":4},"end":{"line":47,"column":26}},"loc":{"start":{"line":47,"column":26},"end":{"line":49,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":8},"end":{"line":15,"column":9}},"type":"if","locations":[{"start":{"line":13,"column":8},"end":{"line":15,"column":9}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":23,"column":44},"end":{"line":23,"column":77}},"type":"cond-expr","locations":[{"start":{"line":23,"column":58},"end":{"line":23,"column":64}},{"start":{"line":23,"column":67},"end":{"line":23,"column":77}}]},"2":{"loc":{"start":{"line":28,"column":24},"end":{"line":28,"column":55}},"type":"cond-expr","locations":[{"start":{"line":28,"column":38},"end":{"line":28,"column":44}},{"start":{"line":28,"column":47},"end":{"line":28,"column":55}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0]}} +,"/home/jailuser/git/src/frontend/memory_content_provider.ts": {"path":"/home/jailuser/git/src/frontend/memory_content_provider.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":49}},"2":{"start":{"line":5,"column":12},"end":{"line":5,"column":65}},"3":{"start":{"line":6,"column":11},"end":{"line":6,"column":49}},"4":{"start":{"line":8,"column":12},"end":{"line":8,"column":30}},"5":{"start":{"line":9,"column":12},"end":{"line":9,"column":53}},"6":{"start":{"line":10,"column":12},"end":{"line":10,"column":49}},"7":{"start":{"line":11,"column":12},"end":{"line":11,"column":51}},"8":{"start":{"line":13,"column":12},"end":{"line":20,"column":7}},"9":{"start":{"line":23,"column":8},"end":{"line":83,"column":11}},"10":{"start":{"line":24,"column":27},"end":{"line":24,"column":48}},"11":{"start":{"line":25,"column":28},"end":{"line":27,"column":46}},"12":{"start":{"line":28,"column":27},"end":{"line":30,"column":45}},"13":{"start":{"line":32,"column":12},"end":{"line":82,"column":18}},"14":{"start":{"line":36,"column":48},"end":{"line":36,"column":60}},"15":{"start":{"line":37,"column":41},"end":{"line":37,"column":65}},"16":{"start":{"line":38,"column":39},"end":{"line":38,"column":59}},"17":{"start":{"line":39,"column":37},"end":{"line":39,"column":39}},"18":{"start":{"line":41,"column":24},"end":{"line":41,"column":99}},"19":{"start":{"line":42,"column":24},"end":{"line":42,"column":73}},"20":{"start":{"line":44,"column":39},"end":{"line":44,"column":41}},"21":{"start":{"line":45,"column":24},"end":{"line":48,"column":25}},"22":{"start":{"line":45,"column":37},"end":{"line":45,"column":38}},"23":{"start":{"line":46,"column":28},"end":{"line":46,"column":44}},"24":{"start":{"line":47,"column":28},"end":{"line":47,"column":44}},"25":{"start":{"line":50,"column":24},"end":{"line":65,"column":25}},"26":{"start":{"line":50,"column":37},"end":{"line":50,"column":38}},"27":{"start":{"line":51,"column":41},"end":{"line":51,"column":49}},"28":{"start":{"line":52,"column":28},"end":{"line":52,"column":84}},"29":{"start":{"line":53,"column":28},"end":{"line":56,"column":68}},"30":{"start":{"line":58,"column":28},"end":{"line":64,"column":29}},"31":{"start":{"line":59,"column":32},"end":{"line":59,"column":58}},"32":{"start":{"line":60,"column":32},"end":{"line":60,"column":46}},"33":{"start":{"line":61,"column":32},"end":{"line":61,"column":47}},"34":{"start":{"line":62,"column":32},"end":{"line":62,"column":49}},"35":{"start":{"line":63,"column":32},"end":{"line":63,"column":81}},"36":{"start":{"line":67,"column":42},"end":{"line":67,"column":79}},"37":{"start":{"line":68,"column":24},"end":{"line":70,"column":25}},"38":{"start":{"line":68,"column":37},"end":{"line":68,"column":38}},"39":{"start":{"line":69,"column":28},"end":{"line":69,"column":44}},"40":{"start":{"line":71,"column":24},"end":{"line":71,"column":50}},"41":{"start":{"line":72,"column":24},"end":{"line":72,"column":39}},"42":{"start":{"line":74,"column":24},"end":{"line":74,"column":40}},"43":{"start":{"line":77,"column":24},"end":{"line":79,"column":26}},"44":{"start":{"line":80,"column":24},"end":{"line":80,"column":49}},"45":{"start":{"line":87,"column":8},"end":{"line":87,"column":45}},"46":{"start":{"line":91,"column":8},"end":{"line":93,"column":9}},"47":{"start":{"line":92,"column":12},"end":{"line":92,"column":19}},"48":{"start":{"line":95,"column":21},"end":{"line":95,"column":45}},"49":{"start":{"line":96,"column":27},"end":{"line":96,"column":65}},"50":{"start":{"line":98,"column":8},"end":{"line":102,"column":9}},"51":{"start":{"line":99,"column":12},"end":{"line":99,"column":49}},"52":{"start":{"line":100,"column":15},"end":{"line":102,"column":9}},"53":{"start":{"line":101,"column":12},"end":{"line":101,"column":62}},"54":{"start":{"line":104,"column":8},"end":{"line":104,"column":22}},"55":{"start":{"line":108,"column":21},"end":{"line":108,"column":48}},"56":{"start":{"line":109,"column":24},"end":{"line":109,"column":35}},"57":{"start":{"line":110,"column":8},"end":{"line":114,"column":9}},"58":{"start":{"line":111,"column":12},"end":{"line":111,"column":44}},"59":{"start":{"line":113,"column":12},"end":{"line":113,"column":58}},"60":{"start":{"line":115,"column":8},"end":{"line":115,"column":52}},"61":{"start":{"line":119,"column":25},"end":{"line":119,"column":63}},"62":{"start":{"line":120,"column":21},"end":{"line":120,"column":57}},"63":{"start":{"line":121,"column":8},"end":{"line":121,"column":88}},"64":{"start":{"line":123,"column":39},"end":{"line":123,"column":41}},"65":{"start":{"line":124,"column":26},"end":{"line":124,"column":74}},"66":{"start":{"line":125,"column":24},"end":{"line":125,"column":70}},"67":{"start":{"line":127,"column":8},"end":{"line":131,"column":9}},"68":{"start":{"line":127,"column":24},"end":{"line":127,"column":37}},"69":{"start":{"line":128,"column":30},"end":{"line":128,"column":112}},"70":{"start":{"line":129,"column":28},"end":{"line":129,"column":104}},"71":{"start":{"line":130,"column":12},"end":{"line":130,"column":62}},"72":{"start":{"line":133,"column":8},"end":{"line":133,"column":22}},"73":{"start":{"line":137,"column":26},"end":{"line":137,"column":61}},"74":{"start":{"line":138,"column":8},"end":{"line":144,"column":9}},"75":{"start":{"line":142,"column":12},"end":{"line":142,"column":74}},"76":{"start":{"line":143,"column":12},"end":{"line":143,"column":19}},"77":{"start":{"line":146,"column":28},"end":{"line":146,"column":69}},"78":{"start":{"line":147,"column":26},"end":{"line":147,"column":65}},"79":{"start":{"line":149,"column":8},"end":{"line":152,"column":9}},"80":{"start":{"line":150,"column":12},"end":{"line":150,"column":74}},"81":{"start":{"line":151,"column":12},"end":{"line":151,"column":19}},"82":{"start":{"line":154,"column":21},"end":{"line":154,"column":66}},"83":{"start":{"line":155,"column":8},"end":{"line":155,"column":77}},"84":{"start":{"line":156,"column":8},"end":{"line":156,"column":74}},"85":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}}},"fnMap":{"0":{"name":"(anonymous_9)","decl":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}},"loc":{"start":{"line":4,"column":0},"end":{"line":158,"column":1}}},"1":{"name":"(anonymous_10)","decl":{"start":{"line":22,"column":4},"end":{"line":22,"column":30}},"loc":{"start":{"line":22,"column":46},"end":{"line":84,"column":5}}},"2":{"name":"(anonymous_11)","decl":{"start":{"line":23,"column":27},"end":{"line":23,"column":28}},"loc":{"start":{"line":23,"column":47},"end":{"line":83,"column":9}}},"3":{"name":"(anonymous_12)","decl":{"start":{"line":35,"column":20},"end":{"line":35,"column":21}},"loc":{"start":{"line":35,"column":36},"end":{"line":75,"column":21}}},"4":{"name":"(anonymous_13)","decl":{"start":{"line":76,"column":20},"end":{"line":76,"column":21}},"loc":{"start":{"line":76,"column":35},"end":{"line":81,"column":21}}},"5":{"name":"(anonymous_14)","decl":{"start":{"line":86,"column":4},"end":{"line":86,"column":10}},"loc":{"start":{"line":86,"column":40},"end":{"line":88,"column":5}}},"6":{"name":"(anonymous_15)","decl":{"start":{"line":90,"column":4},"end":{"line":90,"column":13}},"loc":{"start":{"line":90,"column":39},"end":{"line":105,"column":5}}},"7":{"name":"(anonymous_16)","decl":{"start":{"line":107,"column":4},"end":{"line":107,"column":15}},"loc":{"start":{"line":107,"column":56},"end":{"line":116,"column":5}}},"8":{"name":"(anonymous_17)","decl":{"start":{"line":118,"column":4},"end":{"line":118,"column":13}},"loc":{"start":{"line":118,"column":70},"end":{"line":134,"column":5}}},"9":{"name":"(anonymous_18)","decl":{"start":{"line":136,"column":4},"end":{"line":136,"column":19}},"loc":{"start":{"line":136,"column":64},"end":{"line":157,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":28},"end":{"line":27,"column":46}},"type":"cond-expr","locations":[{"start":{"line":26,"column":18},"end":{"line":26,"column":59}},{"start":{"line":27,"column":18},"end":{"line":27,"column":46}}]},"1":{"loc":{"start":{"line":28,"column":27},"end":{"line":30,"column":45}},"type":"cond-expr","locations":[{"start":{"line":29,"column":18},"end":{"line":29,"column":58}},{"start":{"line":30,"column":18},"end":{"line":30,"column":45}}]},"2":{"loc":{"start":{"line":33,"column":65},"end":{"line":33,"column":77}},"type":"binary-expr","locations":[{"start":{"line":33,"column":65},"end":{"line":33,"column":71}},{"start":{"line":33,"column":75},"end":{"line":33,"column":77}}]},"3":{"loc":{"start":{"line":54,"column":32},"end":{"line":56,"column":67}},"type":"cond-expr","locations":[{"start":{"line":55,"column":38},"end":{"line":55,"column":41}},{"start":{"line":56,"column":38},"end":{"line":56,"column":67}}]},"4":{"loc":{"start":{"line":54,"column":32},"end":{"line":54,"column":74}},"type":"binary-expr","locations":[{"start":{"line":54,"column":32},"end":{"line":54,"column":42}},{"start":{"line":54,"column":47},"end":{"line":54,"column":58}},{"start":{"line":54,"column":62},"end":{"line":54,"column":73}}]},"5":{"loc":{"start":{"line":58,"column":28},"end":{"line":64,"column":29}},"type":"if","locations":[{"start":{"line":58,"column":28},"end":{"line":64,"column":29}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":58,"column":32},"end":{"line":58,"column":75}},"type":"binary-expr","locations":[{"start":{"line":58,"column":32},"end":{"line":58,"column":57}},{"start":{"line":58,"column":61},"end":{"line":58,"column":75}}]},"7":{"loc":{"start":{"line":91,"column":8},"end":{"line":93,"column":9}},"type":"if","locations":[{"start":{"line":91,"column":8},"end":{"line":93,"column":9}},{"start":{},"end":{}}]},"8":{"loc":{"start":{"line":91,"column":12},"end":{"line":91,"column":71}},"type":"binary-expr","locations":[{"start":{"line":91,"column":12},"end":{"line":91,"column":29}},{"start":{"line":91,"column":33},"end":{"line":91,"column":71}}]},"9":{"loc":{"start":{"line":98,"column":8},"end":{"line":102,"column":9}},"type":"if","locations":[{"start":{"line":98,"column":8},"end":{"line":102,"column":9}},{"start":{"line":100,"column":15},"end":{"line":102,"column":9}}]},"10":{"loc":{"start":{"line":98,"column":12},"end":{"line":98,"column":93}},"type":"binary-expr","locations":[{"start":{"line":98,"column":12},"end":{"line":98,"column":51}},{"start":{"line":98,"column":55},"end":{"line":98,"column":93}}]},"11":{"loc":{"start":{"line":100,"column":15},"end":{"line":102,"column":9}},"type":"if","locations":[{"start":{"line":100,"column":15},"end":{"line":102,"column":9}},{"start":{},"end":{}}]},"12":{"loc":{"start":{"line":107,"column":32},"end":{"line":107,"column":56}},"type":"default-arg","locations":[{"start":{"line":107,"column":51},"end":{"line":107,"column":56}}]},"13":{"loc":{"start":{"line":110,"column":8},"end":{"line":114,"column":9}},"type":"if","locations":[{"start":{"line":110,"column":8},"end":{"line":114,"column":9}},{"start":{"line":112,"column":15},"end":{"line":114,"column":9}}]},"14":{"loc":{"start":{"line":121,"column":70},"end":{"line":121,"column":85}},"type":"cond-expr","locations":[{"start":{"line":121,"column":80},"end":{"line":121,"column":81}},{"start":{"line":121,"column":84},"end":{"line":121,"column":85}}]},"15":{"loc":{"start":{"line":124,"column":26},"end":{"line":124,"column":74}},"type":"cond-expr","locations":[{"start":{"line":124,"column":36},"end":{"line":124,"column":54}},{"start":{"line":124,"column":57},"end":{"line":124,"column":74}}]},"16":{"loc":{"start":{"line":125,"column":24},"end":{"line":125,"column":70}},"type":"cond-expr","locations":[{"start":{"line":125,"column":34},"end":{"line":125,"column":51}},{"start":{"line":125,"column":54},"end":{"line":125,"column":70}}]},"17":{"loc":{"start":{"line":128,"column":56},"end":{"line":128,"column":111}},"type":"cond-expr","locations":[{"start":{"line":128,"column":81},"end":{"line":128,"column":99}},{"start":{"line":128,"column":102},"end":{"line":128,"column":111}}]},"18":{"loc":{"start":{"line":129,"column":54},"end":{"line":129,"column":103}},"type":"cond-expr","locations":[{"start":{"line":129,"column":77},"end":{"line":129,"column":93}},{"start":{"line":129,"column":96},"end":{"line":129,"column":103}}]},"19":{"loc":{"start":{"line":138,"column":8},"end":{"line":144,"column":9}},"type":"if","locations":[{"start":{"line":138,"column":8},"end":{"line":144,"column":9}},{"start":{},"end":{}}]},"20":{"loc":{"start":{"line":139,"column":12},"end":{"line":140,"column":58}},"type":"binary-expr","locations":[{"start":{"line":139,"column":12},"end":{"line":139,"column":60}},{"start":{"line":140,"column":12},"end":{"line":140,"column":58}}]},"21":{"loc":{"start":{"line":149,"column":8},"end":{"line":152,"column":9}},"type":"if","locations":[{"start":{"line":149,"column":8},"end":{"line":152,"column":9}},{"start":{},"end":{}}]},"22":{"loc":{"start":{"line":149,"column":12},"end":{"line":149,"column":64}},"type":"binary-expr","locations":[{"start":{"line":149,"column":12},"end":{"line":149,"column":37}},{"start":{"line":149,"column":41},"end":{"line":149,"column":64}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0]}} +,"/home/jailuser/git/src/frontend/memory_tree_provider.ts": {"path":"/home/jailuser/git/src/frontend/memory_tree_provider.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":4,"column":12},"end":{"line":4,"column":67}},"2":{"start":{"line":5,"column":11},"end":{"line":5,"column":65}},"3":{"start":{"line":6,"column":12},"end":{"line":6,"column":35}},"4":{"start":{"line":9,"column":8},"end":{"line":9,"column":41}},"5":{"start":{"line":13,"column":8},"end":{"line":13,"column":28}},"6":{"start":{"line":17,"column":8},"end":{"line":19,"column":9}},"7":{"start":{"line":18,"column":12},"end":{"line":18,"column":22}},"8":{"start":{"line":21,"column":8},"end":{"line":23,"column":9}},"9":{"start":{"line":22,"column":12},"end":{"line":22,"column":42}},"10":{"start":{"line":25,"column":21},"end":{"line":25,"column":60}},"11":{"start":{"line":26,"column":8},"end":{"line":29,"column":10}},"12":{"start":{"line":30,"column":8},"end":{"line":30,"column":22}},"13":{"start":{"line":34,"column":8},"end":{"line":42,"column":11}},"14":{"start":{"line":35,"column":25},"end":{"line":35,"column":51}},"15":{"start":{"line":36,"column":12},"end":{"line":40,"column":14}},"16":{"start":{"line":41,"column":12},"end":{"line":41,"column":24}},"17":{"start":{"line":46,"column":8},"end":{"line":46,"column":23}},"18":{"start":{"line":50,"column":22},"end":{"line":50,"column":44}},"19":{"start":{"line":51,"column":8},"end":{"line":54,"column":9}},"20":{"start":{"line":52,"column":12},"end":{"line":52,"column":37}},"21":{"start":{"line":53,"column":12},"end":{"line":53,"column":27}},"22":{"start":{"line":58,"column":22},"end":{"line":58,"column":44}},"23":{"start":{"line":59,"column":8},"end":{"line":62,"column":9}},"24":{"start":{"line":60,"column":12},"end":{"line":60,"column":67}},"25":{"start":{"line":60,"column":54},"end":{"line":60,"column":65}},"26":{"start":{"line":61,"column":12},"end":{"line":61,"column":27}},"27":{"start":{"line":66,"column":8},"end":{"line":66,"column":26}},"28":{"start":{"line":67,"column":8},"end":{"line":67,"column":23}},"29":{"start":{"line":71,"column":8},"end":{"line":71,"column":40}},"30":{"start":{"line":72,"column":8},"end":{"line":72,"column":23}},"31":{"start":{"line":76,"column":8},"end":{"line":76,"column":26}},"32":{"start":{"line":77,"column":8},"end":{"line":77,"column":23}},"33":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}}},"fnMap":{"0":{"name":"(anonymous_9)","decl":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}},"loc":{"start":{"line":3,"column":0},"end":{"line":79,"column":1}}},"1":{"name":"(anonymous_10)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":11}},"loc":{"start":{"line":8,"column":11},"end":{"line":10,"column":5}}},"2":{"name":"(anonymous_11)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":16}},"loc":{"start":{"line":12,"column":16},"end":{"line":14,"column":5}}},"3":{"name":"(anonymous_12)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":15}},"loc":{"start":{"line":16,"column":41},"end":{"line":31,"column":5}}},"4":{"name":"(anonymous_13)","decl":{"start":{"line":33,"column":12},"end":{"line":33,"column":27}},"loc":{"start":{"line":33,"column":27},"end":{"line":43,"column":5}}},"5":{"name":"(anonymous_14)","decl":{"start":{"line":34,"column":32},"end":{"line":34,"column":33}},"loc":{"start":{"line":34,"column":42},"end":{"line":42,"column":9}}},"6":{"name":"(anonymous_15)","decl":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"loc":{"start":{"line":45,"column":40},"end":{"line":47,"column":5}}},"7":{"name":"(anonymous_16)","decl":{"start":{"line":49,"column":4},"end":{"line":49,"column":15}},"loc":{"start":{"line":49,"column":47},"end":{"line":55,"column":5}}},"8":{"name":"(anonymous_17)","decl":{"start":{"line":57,"column":4},"end":{"line":57,"column":17}},"loc":{"start":{"line":57,"column":49},"end":{"line":63,"column":5}}},"9":{"name":"(anonymous_18)","decl":{"start":{"line":60,"column":47},"end":{"line":60,"column":48}},"loc":{"start":{"line":60,"column":54},"end":{"line":60,"column":65}}},"10":{"name":"(anonymous_19)","decl":{"start":{"line":65,"column":4},"end":{"line":65,"column":16}},"loc":{"start":{"line":65,"column":16},"end":{"line":68,"column":5}}},"11":{"name":"(anonymous_20)","decl":{"start":{"line":70,"column":4},"end":{"line":70,"column":23}},"loc":{"start":{"line":70,"column":44},"end":{"line":73,"column":5}}},"12":{"name":"(anonymous_21)","decl":{"start":{"line":75,"column":4},"end":{"line":75,"column":26}},"loc":{"start":{"line":75,"column":26},"end":{"line":78,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":8},"end":{"line":19,"column":9}},"type":"if","locations":[{"start":{"line":17,"column":8},"end":{"line":19,"column":9}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":21,"column":8},"end":{"line":23,"column":9}},"type":"if","locations":[{"start":{"line":21,"column":8},"end":{"line":23,"column":9}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":51,"column":8},"end":{"line":54,"column":9}},"type":"if","locations":[{"start":{"line":51,"column":8},"end":{"line":54,"column":9}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":59,"column":8},"end":{"line":62,"column":9}},"type":"if","locations":[{"start":{"line":59,"column":8},"end":{"line":62,"column":9}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":71,"column":23},"end":{"line":71,"column":39}},"type":"binary-expr","locations":[{"start":{"line":71,"column":23},"end":{"line":71,"column":33}},{"start":{"line":71,"column":37},"end":{"line":71,"column":39}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0]}} +,"/home/jailuser/git/src/frontend/peripheral.ts": {"path":"/home/jailuser/git/src/frontend/peripheral.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":33}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":41}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":null}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":null}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":null}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"9":{"start":{"line":16,"column":4},"end":{"line":16,"column":null}},"10":{"start":{"line":19,"column":0},"end":{"line":19,"column":null}},"11":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"12":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"13":{"start":{"line":22,"column":4},"end":{"line":22,"column":null}},"14":{"start":{"line":25,"column":50},"end":{"line":31,"column":2}},"15":{"start":{"line":40,"column":8},"end":{"line":40,"column":39}},"16":{"start":{"line":35,"column":15},"end":{"line":35,"column":28}},"17":{"start":{"line":36,"column":15},"end":{"line":36,"column":64}},"18":{"start":{"line":37,"column":15},"end":{"line":37,"column":35}},"19":{"start":{"line":38,"column":15},"end":{"line":38,"column":29}},"20":{"start":{"line":41,"column":8},"end":{"line":45,"column":10}},"21":{"start":{"line":46,"column":8},"end":{"line":46,"column":70}},"22":{"start":{"line":33,"column":0},"end":{"line":33,"column":13}},"23":{"start":{"line":55,"column":23},"end":{"line":55,"column":45}},"24":{"start":{"line":51,"column":11},"end":{"line":51,"column":37}},"25":{"start":{"line":52,"column":11},"end":{"line":52,"column":52}},"26":{"start":{"line":58,"column":8},"end":{"line":58,"column":38}},"27":{"start":{"line":62,"column":8},"end":{"line":62,"column":38}},"28":{"start":{"line":66,"column":8},"end":{"line":66,"column":38}},"29":{"start":{"line":70,"column":8},"end":{"line":70,"column":18}},"30":{"start":{"line":74,"column":8},"end":{"line":74,"column":20}},"31":{"start":{"line":78,"column":8},"end":{"line":78,"column":20}},"32":{"start":{"line":82,"column":8},"end":{"line":82,"column":29}},"33":{"start":{"line":50,"column":0},"end":{"line":50,"column":13}},"34":{"start":{"line":87,"column":4},"end":{"line":89,"column":5}},"35":{"start":{"line":88,"column":8},"end":{"line":88,"column":47}},"36":{"start":{"line":90,"column":4},"end":{"line":92,"column":5}},"37":{"start":{"line":91,"column":8},"end":{"line":91,"column":48}},"38":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"39":{"start":{"line":94,"column":8},"end":{"line":94,"column":35}},"40":{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},"41":{"start":{"line":97,"column":8},"end":{"line":97,"column":47}},"42":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"43":{"start":{"line":103,"column":4},"end":{"line":109,"column":5}},"44":{"start":{"line":104,"column":22},"end":{"line":104,"column":62}},"45":{"start":{"line":104,"column":53},"end":{"line":104,"column":61}},"46":{"start":{"line":105,"column":8},"end":{"line":107,"column":9}},"47":{"start":{"line":106,"column":12},"end":{"line":106,"column":75}},"48":{"start":{"line":108,"column":8},"end":{"line":108,"column":21}},"49":{"start":{"line":111,"column":4},"end":{"line":122,"column":5}},"50":{"start":{"line":112,"column":22},"end":{"line":112,"column":69}},"51":{"start":{"line":112,"column":53},"end":{"line":112,"column":68}},"52":{"start":{"line":113,"column":22},"end":{"line":113,"column":30}},"53":{"start":{"line":114,"column":8},"end":{"line":116,"column":9}},"54":{"start":{"line":115,"column":12},"end":{"line":115,"column":75}},"55":{"start":{"line":117,"column":33},"end":{"line":117,"column":35}},"56":{"start":{"line":118,"column":8},"end":{"line":120,"column":9}},"57":{"start":{"line":118,"column":21},"end":{"line":118,"column":22}},"58":{"start":{"line":119,"column":12},"end":{"line":119,"column":40}},"59":{"start":{"line":121,"column":8},"end":{"line":121,"column":22}},"60":{"start":{"line":124,"column":4},"end":{"line":134,"column":5}},"61":{"start":{"line":125,"column":26},"end":{"line":125,"column":48}},"62":{"start":{"line":126,"column":8},"end":{"line":128,"column":9}},"63":{"start":{"line":127,"column":12},"end":{"line":127,"column":75}},"64":{"start":{"line":129,"column":33},"end":{"line":129,"column":35}},"65":{"start":{"line":130,"column":8},"end":{"line":132,"column":9}},"66":{"start":{"line":130,"column":21},"end":{"line":130,"column":22}},"67":{"start":{"line":131,"column":12},"end":{"line":131,"column":60}},"68":{"start":{"line":133,"column":8},"end":{"line":133,"column":22}},"69":{"start":{"line":136,"column":4},"end":{"line":136,"column":14}},"70":{"start":{"line":141,"column":15},"end":{"line":141,"column":27}},"71":{"start":{"line":142,"column":15},"end":{"line":142,"column":34}},"72":{"start":{"line":143,"column":15},"end":{"line":143,"column":28}},"73":{"start":{"line":163,"column":8},"end":{"line":163,"column":37}},"74":{"start":{"line":159,"column":11},"end":{"line":159,"column":37}},"75":{"start":{"line":164,"column":8},"end":{"line":164,"column":33}},"76":{"start":{"line":165,"column":8},"end":{"line":165,"column":47}},"77":{"start":{"line":166,"column":8},"end":{"line":166,"column":47}},"78":{"start":{"line":167,"column":8},"end":{"line":167,"column":47}},"79":{"start":{"line":168,"column":8},"end":{"line":168,"column":49}},"80":{"start":{"line":169,"column":8},"end":{"line":169,"column":50}},"81":{"start":{"line":170,"column":8},"end":{"line":170,"column":39}},"82":{"start":{"line":174,"column":22},"end":{"line":174,"column":75}},"83":{"start":{"line":175,"column":8},"end":{"line":180,"column":10}},"84":{"start":{"line":184,"column":8},"end":{"line":184,"column":29}},"85":{"start":{"line":188,"column":8},"end":{"line":188,"column":33}},"86":{"start":{"line":189,"column":8},"end":{"line":189,"column":79}},"87":{"start":{"line":189,"column":48},"end":{"line":189,"column":76}},"88":{"start":{"line":193,"column":8},"end":{"line":193,"column":34}},"89":{"start":{"line":194,"column":8},"end":{"line":194,"column":79}},"90":{"start":{"line":194,"column":48},"end":{"line":194,"column":76}},"91":{"start":{"line":198,"column":8},"end":{"line":202,"column":9}},"92":{"start":{"line":199,"column":12},"end":{"line":199,"column":82}},"93":{"start":{"line":201,"column":12},"end":{"line":201,"column":37}},"94":{"start":{"line":206,"column":8},"end":{"line":206,"column":41}},"95":{"start":{"line":210,"column":8},"end":{"line":210,"column":27}},"96":{"start":{"line":214,"column":8},"end":{"line":234,"column":11}},"97":{"start":{"line":215,"column":12},"end":{"line":233,"column":13}},"98":{"start":{"line":216,"column":16},"end":{"line":230,"column":22}},"99":{"start":{"line":223,"column":28},"end":{"line":223,"column":61}},"100":{"start":{"line":224,"column":28},"end":{"line":224,"column":77}},"101":{"start":{"line":224,"column":61},"end":{"line":224,"column":75}},"102":{"start":{"line":225,"column":28},"end":{"line":225,"column":42}},"103":{"start":{"line":228,"column":28},"end":{"line":228,"column":42}},"104":{"start":{"line":232,"column":16},"end":{"line":232,"column":31}},"105":{"start":{"line":238,"column":8},"end":{"line":238,"column":29}},"106":{"start":{"line":242,"column":32},"end":{"line":242,"column":34}},"107":{"start":{"line":243,"column":8},"end":{"line":249,"column":9}},"108":{"start":{"line":244,"column":12},"end":{"line":248,"column":15}},"109":{"start":{"line":250,"column":8},"end":{"line":252,"column":11}},"110":{"start":{"line":251,"column":12},"end":{"line":251,"column":65}},"111":{"start":{"line":253,"column":8},"end":{"line":253,"column":24}},"112":{"start":{"line":257,"column":8},"end":{"line":259,"column":9}},"113":{"start":{"line":258,"column":12},"end":{"line":258,"column":24}},"114":{"start":{"line":260,"column":23},"end":{"line":260,"column":78}},"115":{"start":{"line":260,"column":59},"end":{"line":260,"column":77}},"116":{"start":{"line":261,"column":8},"end":{"line":261,"column":63}},"117":{"start":{"line":151,"column":0},"end":{"line":151,"column":13}},"118":{"start":{"line":279,"column":8},"end":{"line":279,"column":34}},"119":{"start":{"line":278,"column":23},"end":{"line":278,"column":34}},"120":{"start":{"line":276,"column":11},"end":{"line":276,"column":37}},"121":{"start":{"line":280,"column":8},"end":{"line":280,"column":33}},"122":{"start":{"line":281,"column":8},"end":{"line":281,"column":47}},"123":{"start":{"line":282,"column":8},"end":{"line":282,"column":44}},"124":{"start":{"line":283,"column":8},"end":{"line":283,"column":69}},"125":{"start":{"line":284,"column":8},"end":{"line":284,"column":48}},"126":{"start":{"line":285,"column":8},"end":{"line":285,"column":66}},"127":{"start":{"line":286,"column":8},"end":{"line":286,"column":35}},"128":{"start":{"line":290,"column":22},"end":{"line":290,"column":67}},"129":{"start":{"line":291,"column":8},"end":{"line":296,"column":10}},"130":{"start":{"line":300,"column":8},"end":{"line":300,"column":29}},"131":{"start":{"line":304,"column":8},"end":{"line":304,"column":59}},"132":{"start":{"line":305,"column":8},"end":{"line":305,"column":79}},"133":{"start":{"line":305,"column":48},"end":{"line":305,"column":76}},"134":{"start":{"line":309,"column":8},"end":{"line":309,"column":34}},"135":{"start":{"line":310,"column":8},"end":{"line":310,"column":79}},"136":{"start":{"line":310,"column":48},"end":{"line":310,"column":76}},"137":{"start":{"line":314,"column":8},"end":{"line":314,"column":64}},"138":{"start":{"line":318,"column":8},"end":{"line":318,"column":60}},"139":{"start":{"line":322,"column":8},"end":{"line":322,"column":89}},"140":{"start":{"line":326,"column":8},"end":{"line":326,"column":37}},"141":{"start":{"line":330,"column":32},"end":{"line":330,"column":34}},"142":{"start":{"line":331,"column":8},"end":{"line":337,"column":9}},"143":{"start":{"line":332,"column":12},"end":{"line":336,"column":15}},"144":{"start":{"line":338,"column":8},"end":{"line":340,"column":11}},"145":{"start":{"line":339,"column":12},"end":{"line":339,"column":79}},"146":{"start":{"line":341,"column":8},"end":{"line":341,"column":24}},"147":{"start":{"line":345,"column":8},"end":{"line":347,"column":9}},"148":{"start":{"line":346,"column":12},"end":{"line":346,"column":24}},"149":{"start":{"line":348,"column":23},"end":{"line":348,"column":78}},"150":{"start":{"line":348,"column":59},"end":{"line":348,"column":77}},"151":{"start":{"line":349,"column":8},"end":{"line":349,"column":63}},"152":{"start":{"line":269,"column":0},"end":{"line":269,"column":13}},"153":{"start":{"line":372,"column":8},"end":{"line":372,"column":35}},"154":{"start":{"line":371,"column":23},"end":{"line":371,"column":34}},"155":{"start":{"line":369,"column":11},"end":{"line":369,"column":37}},"156":{"start":{"line":373,"column":8},"end":{"line":373,"column":33}},"157":{"start":{"line":374,"column":8},"end":{"line":374,"column":47}},"158":{"start":{"line":375,"column":8},"end":{"line":375,"column":44}},"159":{"start":{"line":376,"column":8},"end":{"line":376,"column":66}},"160":{"start":{"line":377,"column":8},"end":{"line":377,"column":48}},"161":{"start":{"line":378,"column":8},"end":{"line":378,"column":100}},"162":{"start":{"line":379,"column":8},"end":{"line":379,"column":44}},"163":{"start":{"line":380,"column":8},"end":{"line":380,"column":50}},"164":{"start":{"line":381,"column":8},"end":{"line":381,"column":47}},"165":{"start":{"line":382,"column":8},"end":{"line":382,"column":71}},"166":{"start":{"line":383,"column":8},"end":{"line":383,"column":77}},"167":{"start":{"line":384,"column":8},"end":{"line":384,"column":20}},"168":{"start":{"line":385,"column":8},"end":{"line":385,"column":35}},"169":{"start":{"line":389,"column":8},"end":{"line":389,"column":44}},"170":{"start":{"line":393,"column":8},"end":{"line":393,"column":61}},"171":{"start":{"line":397,"column":8},"end":{"line":408,"column":11}},"172":{"start":{"line":398,"column":27},"end":{"line":398,"column":45}},"173":{"start":{"line":399,"column":12},"end":{"line":403,"column":13}},"174":{"start":{"line":400,"column":16},"end":{"line":402,"column":18}},"175":{"start":{"line":404,"column":25},"end":{"line":404,"column":50}},"176":{"start":{"line":405,"column":33},"end":{"line":405,"column":48}},"177":{"start":{"line":406,"column":29},"end":{"line":406,"column":71}},"178":{"start":{"line":407,"column":12},"end":{"line":407,"column":69}},"179":{"start":{"line":412,"column":27},"end":{"line":412,"column":39}},"180":{"start":{"line":413,"column":8},"end":{"line":417,"column":9}},"181":{"start":{"line":414,"column":12},"end":{"line":414,"column":40}},"182":{"start":{"line":415,"column":15},"end":{"line":417,"column":9}},"183":{"start":{"line":416,"column":12},"end":{"line":416,"column":40}},"184":{"start":{"line":419,"column":20},"end":{"line":419,"column":65}},"185":{"start":{"line":420,"column":8},"end":{"line":434,"column":9}},"186":{"start":{"line":421,"column":12},"end":{"line":421,"column":39}},"187":{"start":{"line":423,"column":12},"end":{"line":433,"column":13}},"188":{"start":{"line":425,"column":20},"end":{"line":425,"column":66}},"189":{"start":{"line":426,"column":20},"end":{"line":426,"column":26}},"190":{"start":{"line":428,"column":20},"end":{"line":428,"column":102}},"191":{"start":{"line":429,"column":20},"end":{"line":429,"column":26}},"192":{"start":{"line":431,"column":20},"end":{"line":431,"column":82}},"193":{"start":{"line":432,"column":20},"end":{"line":432,"column":26}},"194":{"start":{"line":437,"column":12},"end":{"line":441,"column":54}},"195":{"start":{"line":443,"column":8},"end":{"line":443,"column":68}},"196":{"start":{"line":447,"column":8},"end":{"line":447,"column":35}},"197":{"start":{"line":451,"column":8},"end":{"line":451,"column":59}},"198":{"start":{"line":452,"column":8},"end":{"line":452,"column":79}},"199":{"start":{"line":452,"column":48},"end":{"line":452,"column":76}},"200":{"start":{"line":456,"column":8},"end":{"line":456,"column":34}},"201":{"start":{"line":457,"column":8},"end":{"line":457,"column":79}},"202":{"start":{"line":457,"column":48},"end":{"line":457,"column":76}},"203":{"start":{"line":461,"column":8},"end":{"line":461,"column":89}},"204":{"start":{"line":465,"column":8},"end":{"line":472,"column":9}},"205":{"start":{"line":467,"column":16},"end":{"line":467,"column":52}},"206":{"start":{"line":469,"column":16},"end":{"line":469,"column":75}},"207":{"start":{"line":471,"column":16},"end":{"line":471,"column":68}},"208":{"start":{"line":476,"column":8},"end":{"line":497,"column":11}},"209":{"start":{"line":477,"column":12},"end":{"line":496,"column":19}},"210":{"start":{"line":481,"column":20},"end":{"line":494,"column":21}},"211":{"start":{"line":482,"column":24},"end":{"line":482,"column":62}},"212":{"start":{"line":483,"column":27},"end":{"line":494,"column":21}},"213":{"start":{"line":484,"column":24},"end":{"line":484,"column":61}},"214":{"start":{"line":485,"column":27},"end":{"line":494,"column":21}},"215":{"start":{"line":486,"column":24},"end":{"line":486,"column":52}},"216":{"start":{"line":487,"column":24},"end":{"line":491,"column":25}},"217":{"start":{"line":488,"column":28},"end":{"line":490,"column":30}},"218":{"start":{"line":493,"column":24},"end":{"line":493,"column":78}},"219":{"start":{"line":495,"column":20},"end":{"line":495,"column":74}},"220":{"start":{"line":501,"column":24},"end":{"line":501,"column":59}},"221":{"start":{"line":502,"column":32},"end":{"line":502,"column":34}},"222":{"start":{"line":503,"column":26},"end":{"line":503,"column":39}},"223":{"start":{"line":505,"column":8},"end":{"line":513,"column":9}},"224":{"start":{"line":505,"column":21},"end":{"line":505,"column":22}},"225":{"start":{"line":506,"column":25},"end":{"line":506,"column":40}},"226":{"start":{"line":507,"column":12},"end":{"line":507,"column":28}},"227":{"start":{"line":508,"column":26},"end":{"line":508,"column":43}},"228":{"start":{"line":509,"column":12},"end":{"line":511,"column":13}},"229":{"start":{"line":510,"column":16},"end":{"line":510,"column":40}},"230":{"start":{"line":512,"column":12},"end":{"line":512,"column":31}},"231":{"start":{"line":515,"column":8},"end":{"line":528,"column":11}},"232":{"start":{"line":516,"column":12},"end":{"line":527,"column":18}},"233":{"start":{"line":520,"column":24},"end":{"line":523,"column":26}},"234":{"start":{"line":524,"column":24},"end":{"line":524,"column":38}},"235":{"start":{"line":532,"column":26},"end":{"line":532,"column":39}},"236":{"start":{"line":533,"column":22},"end":{"line":533,"column":66}},"237":{"start":{"line":534,"column":23},"end":{"line":534,"column":41}},"238":{"start":{"line":536,"column":8},"end":{"line":550,"column":9}},"239":{"start":{"line":538,"column":16},"end":{"line":538,"column":56}},"240":{"start":{"line":539,"column":16},"end":{"line":539,"column":22}},"241":{"start":{"line":541,"column":16},"end":{"line":541,"column":59}},"242":{"start":{"line":542,"column":16},"end":{"line":542,"column":22}},"243":{"start":{"line":544,"column":16},"end":{"line":544,"column":59}},"244":{"start":{"line":545,"column":16},"end":{"line":545,"column":22}},"245":{"start":{"line":547,"column":16},"end":{"line":549,"column":18}},"246":{"start":{"line":552,"column":8},"end":{"line":552,"column":57}},"247":{"start":{"line":552,"column":41},"end":{"line":552,"column":55}},"248":{"start":{"line":553,"column":8},"end":{"line":553,"column":37}},"249":{"start":{"line":557,"column":32},"end":{"line":557,"column":34}},"250":{"start":{"line":558,"column":8},"end":{"line":564,"column":9}},"251":{"start":{"line":559,"column":12},"end":{"line":563,"column":15}},"252":{"start":{"line":565,"column":8},"end":{"line":567,"column":11}},"253":{"start":{"line":566,"column":12},"end":{"line":566,"column":79}},"254":{"start":{"line":568,"column":8},"end":{"line":568,"column":24}},"255":{"start":{"line":572,"column":8},"end":{"line":574,"column":9}},"256":{"start":{"line":573,"column":12},"end":{"line":573,"column":24}},"257":{"start":{"line":575,"column":8},"end":{"line":577,"column":9}},"258":{"start":{"line":576,"column":12},"end":{"line":576,"column":76}},"259":{"start":{"line":576,"column":56},"end":{"line":576,"column":74}},"260":{"start":{"line":578,"column":8},"end":{"line":578,"column":20}},"261":{"start":{"line":357,"column":0},"end":{"line":357,"column":13}},"262":{"start":{"line":597,"column":8},"end":{"line":597,"column":32}},"263":{"start":{"line":596,"column":23},"end":{"line":596,"column":43}},"264":{"start":{"line":598,"column":8},"end":{"line":598,"column":33}},"265":{"start":{"line":599,"column":8},"end":{"line":599,"column":47}},"266":{"start":{"line":600,"column":8},"end":{"line":600,"column":37}},"267":{"start":{"line":601,"column":8},"end":{"line":601,"column":35}},"268":{"start":{"line":603,"column":8},"end":{"line":613,"column":9}},"269":{"start":{"line":604,"column":12},"end":{"line":610,"column":13}},"270":{"start":{"line":605,"column":16},"end":{"line":605,"column":54}},"271":{"start":{"line":606,"column":19},"end":{"line":610,"column":13}},"272":{"start":{"line":607,"column":16},"end":{"line":607,"column":55}},"273":{"start":{"line":609,"column":16},"end":{"line":609,"column":53}},"274":{"start":{"line":612,"column":12},"end":{"line":612,"column":48}},"275":{"start":{"line":615,"column":8},"end":{"line":624,"column":9}},"276":{"start":{"line":616,"column":12},"end":{"line":616,"column":51}},"277":{"start":{"line":617,"column":12},"end":{"line":617,"column":37}},"278":{"start":{"line":618,"column":12},"end":{"line":618,"column":40}},"279":{"start":{"line":619,"column":12},"end":{"line":623,"column":13}},"280":{"start":{"line":620,"column":29},"end":{"line":620,"column":58}},"281":{"start":{"line":621,"column":16},"end":{"line":621,"column":50}},"282":{"start":{"line":622,"column":16},"end":{"line":622,"column":55}},"283":{"start":{"line":626,"column":8},"end":{"line":626,"column":35}},"284":{"start":{"line":630,"column":22},"end":{"line":630,"column":70}},"285":{"start":{"line":631,"column":49},"end":{"line":631,"column":53}},"286":{"start":{"line":632,"column":20},"end":{"line":632,"column":29}},"287":{"start":{"line":633,"column":25},"end":{"line":633,"column":36}},"288":{"start":{"line":634,"column":27},"end":{"line":634,"column":34}},"289":{"start":{"line":636,"column":8},"end":{"line":636,"column":65}},"290":{"start":{"line":638,"column":8},"end":{"line":668,"column":9}},"291":{"start":{"line":639,"column":12},"end":{"line":639,"column":39}},"292":{"start":{"line":640,"column":15},"end":{"line":668,"column":9}},"293":{"start":{"line":641,"column":12},"end":{"line":641,"column":39}},"294":{"start":{"line":643,"column":33},"end":{"line":643,"column":35}},"295":{"start":{"line":644,"column":12},"end":{"line":660,"column":13}},"296":{"start":{"line":646,"column":20},"end":{"line":646,"column":54}},"297":{"start":{"line":647,"column":20},"end":{"line":647,"column":26}},"298":{"start":{"line":649,"column":20},"end":{"line":649,"column":69}},"299":{"start":{"line":650,"column":20},"end":{"line":650,"column":26}},"300":{"start":{"line":652,"column":20},"end":{"line":652,"column":87}},"301":{"start":{"line":653,"column":20},"end":{"line":653,"column":26}},"302":{"start":{"line":655,"column":20},"end":{"line":658,"column":62}},"303":{"start":{"line":659,"column":20},"end":{"line":659,"column":26}},"304":{"start":{"line":662,"column":12},"end":{"line":667,"column":13}},"305":{"start":{"line":663,"column":16},"end":{"line":663,"column":52}},"306":{"start":{"line":664,"column":16},"end":{"line":664,"column":68}},"307":{"start":{"line":666,"column":16},"end":{"line":666,"column":48}},"308":{"start":{"line":670,"column":8},"end":{"line":672,"column":9}},"309":{"start":{"line":671,"column":12},"end":{"line":671,"column":38}},"310":{"start":{"line":674,"column":8},"end":{"line":674,"column":93}},"311":{"start":{"line":678,"column":8},"end":{"line":700,"column":11}},"312":{"start":{"line":679,"column":12},"end":{"line":699,"column":13}},"313":{"start":{"line":680,"column":16},"end":{"line":688,"column":18}},"314":{"start":{"line":682,"column":24},"end":{"line":684,"column":25}},"315":{"start":{"line":683,"column":28},"end":{"line":683,"column":64}},"316":{"start":{"line":685,"column":38},"end":{"line":685,"column":67}},"317":{"start":{"line":686,"column":24},"end":{"line":686,"column":108}},"318":{"start":{"line":690,"column":16},"end":{"line":698,"column":23}},"319":{"start":{"line":693,"column":38},"end":{"line":693,"column":57}},"320":{"start":{"line":694,"column":24},"end":{"line":696,"column":25}},"321":{"start":{"line":695,"column":28},"end":{"line":695,"column":74}},"322":{"start":{"line":697,"column":24},"end":{"line":697,"column":101}},"323":{"start":{"line":704,"column":22},"end":{"line":704,"column":70}},"324":{"start":{"line":705,"column":8},"end":{"line":716,"column":9}},"325":{"start":{"line":707,"column":16},"end":{"line":707,"column":40}},"326":{"start":{"line":709,"column":16},"end":{"line":709,"column":55}},"327":{"start":{"line":711,"column":16},"end":{"line":711,"column":73}},"328":{"start":{"line":713,"column":16},"end":{"line":715,"column":54}},"329":{"start":{"line":720,"column":8},"end":{"line":720,"column":89}},"330":{"start":{"line":724,"column":8},"end":{"line":726,"column":9}},"331":{"start":{"line":725,"column":12},"end":{"line":725,"column":81}},"332":{"start":{"line":727,"column":8},"end":{"line":727,"column":18}},"333":{"start":{"line":731,"column":8},"end":{"line":731,"column":47}},"334":{"start":{"line":586,"column":0},"end":{"line":586,"column":13}},"335":{"start":{"line":740,"column":12},"end":{"line":740,"column":67}},"336":{"start":{"line":741,"column":11},"end":{"line":741,"column":65}},"337":{"start":{"line":742,"column":12},"end":{"line":742,"column":48}},"338":{"start":{"line":743,"column":12},"end":{"line":743,"column":36}},"339":{"start":{"line":744,"column":12},"end":{"line":744,"column":42}},"340":{"start":{"line":749,"column":8},"end":{"line":749,"column":41}},"341":{"start":{"line":753,"column":32},"end":{"line":753,"column":34}},"342":{"start":{"line":754,"column":8},"end":{"line":756,"column":11}},"343":{"start":{"line":755,"column":12},"end":{"line":755,"column":56}},"344":{"start":{"line":757,"column":8},"end":{"line":757,"column":24}},"345":{"start":{"line":761,"column":36},"end":{"line":761,"column":38}},"346":{"start":{"line":762,"column":8},"end":{"line":841,"column":11}},"347":{"start":{"line":765,"column":32},"end":{"line":765,"column":77}},"348":{"start":{"line":767,"column":12},"end":{"line":787,"column":13}},"349":{"start":{"line":768,"column":16},"end":{"line":768,"column":58}},"350":{"start":{"line":769,"column":16},"end":{"line":769,"column":56}},"351":{"start":{"line":770,"column":19},"end":{"line":787,"column":13}},"352":{"start":{"line":771,"column":28},"end":{"line":771,"column":45}},"353":{"start":{"line":772,"column":16},"end":{"line":772,"column":61}},"354":{"start":{"line":773,"column":16},"end":{"line":773,"column":41}},"355":{"start":{"line":774,"column":28},"end":{"line":774,"column":50}},"356":{"start":{"line":775,"column":28},"end":{"line":775,"column":50}},"357":{"start":{"line":776,"column":16},"end":{"line":776,"column":38}},"358":{"start":{"line":777,"column":16},"end":{"line":777,"column":29}},"359":{"start":{"line":778,"column":19},"end":{"line":787,"column":13}},"360":{"start":{"line":779,"column":28},"end":{"line":779,"column":54}},"361":{"start":{"line":780,"column":28},"end":{"line":780,"column":54}},"362":{"start":{"line":781,"column":16},"end":{"line":781,"column":38}},"363":{"start":{"line":782,"column":16},"end":{"line":782,"column":29}},"364":{"start":{"line":784,"column":16},"end":{"line":786,"column":18}},"365":{"start":{"line":789,"column":35},"end":{"line":789,"column":39}},"366":{"start":{"line":790,"column":12},"end":{"line":800,"column":13}},"367":{"start":{"line":791,"column":16},"end":{"line":791,"column":33}},"368":{"start":{"line":792,"column":16},"end":{"line":799,"column":19}},"369":{"start":{"line":793,"column":20},"end":{"line":798,"column":21}},"370":{"start":{"line":794,"column":37},"end":{"line":794,"column":52}},"371":{"start":{"line":795,"column":37},"end":{"line":795,"column":88}},"372":{"start":{"line":796,"column":36},"end":{"line":796,"column":80}},"373":{"start":{"line":797,"column":24},"end":{"line":797,"column":81}},"374":{"start":{"line":802,"column":38},"end":{"line":808,"column":14}},"375":{"start":{"line":810,"column":12},"end":{"line":840,"column":13}},"376":{"start":{"line":811,"column":16},"end":{"line":815,"column":17}},"377":{"start":{"line":812,"column":20},"end":{"line":814,"column":22}},"378":{"start":{"line":816,"column":33},"end":{"line":816,"column":59}},"379":{"start":{"line":817,"column":37},"end":{"line":817,"column":72}},"380":{"start":{"line":818,"column":43},"end":{"line":818,"column":45}},"381":{"start":{"line":819,"column":16},"end":{"line":825,"column":17}},"382":{"start":{"line":820,"column":20},"end":{"line":820,"column":76}},"383":{"start":{"line":822,"column":20},"end":{"line":824,"column":21}},"384":{"start":{"line":822,"column":33},"end":{"line":822,"column":34}},"385":{"start":{"line":823,"column":24},"end":{"line":823,"column":48}},"386":{"start":{"line":826,"column":33},"end":{"line":826,"column":46}},"387":{"start":{"line":827,"column":35},"end":{"line":827,"column":41}},"388":{"start":{"line":828,"column":16},"end":{"line":837,"column":17}},"389":{"start":{"line":828,"column":29},"end":{"line":828,"column":30}},"390":{"start":{"line":829,"column":33},"end":{"line":829,"column":70}},"391":{"start":{"line":830,"column":20},"end":{"line":836,"column":22}},"392":{"start":{"line":839,"column":16},"end":{"line":839,"column":72}},"393":{"start":{"line":842,"column":8},"end":{"line":842,"column":22}},"394":{"start":{"line":846,"column":42},"end":{"line":846,"column":44}},"395":{"start":{"line":847,"column":8},"end":{"line":903,"column":11}},"396":{"start":{"line":848,"column":33},"end":{"line":848,"column":35}},"397":{"start":{"line":849,"column":12},"end":{"line":851,"column":13}},"398":{"start":{"line":850,"column":16},"end":{"line":850,"column":57}},"399":{"start":{"line":852,"column":12},"end":{"line":854,"column":13}},"400":{"start":{"line":853,"column":16},"end":{"line":853,"column":63}},"401":{"start":{"line":855,"column":12},"end":{"line":857,"column":13}},"402":{"start":{"line":856,"column":16},"end":{"line":856,"column":57}},"403":{"start":{"line":858,"column":12},"end":{"line":860,"column":13}},"404":{"start":{"line":859,"column":16},"end":{"line":859,"column":69}},"405":{"start":{"line":862,"column":12},"end":{"line":902,"column":13}},"406":{"start":{"line":863,"column":16},"end":{"line":867,"column":17}},"407":{"start":{"line":864,"column":20},"end":{"line":866,"column":22}},"408":{"start":{"line":868,"column":33},"end":{"line":868,"column":57}},"409":{"start":{"line":869,"column":37},"end":{"line":869,"column":70}},"410":{"start":{"line":870,"column":43},"end":{"line":870,"column":45}},"411":{"start":{"line":871,"column":16},"end":{"line":877,"column":17}},"412":{"start":{"line":872,"column":20},"end":{"line":872,"column":74}},"413":{"start":{"line":874,"column":20},"end":{"line":876,"column":21}},"414":{"start":{"line":874,"column":33},"end":{"line":874,"column":34}},"415":{"start":{"line":875,"column":24},"end":{"line":875,"column":48}},"416":{"start":{"line":878,"column":33},"end":{"line":878,"column":44}},"417":{"start":{"line":879,"column":35},"end":{"line":879,"column":69}},"418":{"start":{"line":880,"column":16},"end":{"line":891,"column":17}},"419":{"start":{"line":880,"column":29},"end":{"line":880,"column":30}},"420":{"start":{"line":881,"column":33},"end":{"line":881,"column":70}},"421":{"start":{"line":882,"column":41},"end":{"line":885,"column":null}},"422":{"start":{"line":887,"column":20},"end":{"line":889,"column":21}},"423":{"start":{"line":888,"column":24},"end":{"line":888,"column":77}},"424":{"start":{"line":890,"column":20},"end":{"line":890,"column":49}},"425":{"start":{"line":893,"column":37},"end":{"line":896,"column":null}},"426":{"start":{"line":898,"column":16},"end":{"line":900,"column":17}},"427":{"start":{"line":899,"column":20},"end":{"line":899,"column":73}},"428":{"start":{"line":901,"column":16},"end":{"line":901,"column":45}},"429":{"start":{"line":904,"column":8},"end":{"line":904,"column":91}},"430":{"start":{"line":904,"column":34},"end":{"line":904,"column":88}},"431":{"start":{"line":905,"column":8},"end":{"line":905,"column":25}},"432":{"start":{"line":909,"column":40},"end":{"line":909,"column":42}},"433":{"start":{"line":910,"column":8},"end":{"line":912,"column":9}},"434":{"start":{"line":911,"column":12},"end":{"line":911,"column":22}},"435":{"start":{"line":913,"column":8},"end":{"line":969,"column":11}},"436":{"start":{"line":914,"column":33},"end":{"line":914,"column":35}},"437":{"start":{"line":915,"column":12},"end":{"line":917,"column":13}},"438":{"start":{"line":916,"column":16},"end":{"line":916,"column":61}},"439":{"start":{"line":918,"column":12},"end":{"line":920,"column":13}},"440":{"start":{"line":919,"column":16},"end":{"line":919,"column":67}},"441":{"start":{"line":921,"column":12},"end":{"line":923,"column":13}},"442":{"start":{"line":922,"column":16},"end":{"line":922,"column":61}},"443":{"start":{"line":924,"column":12},"end":{"line":926,"column":13}},"444":{"start":{"line":925,"column":16},"end":{"line":925,"column":70}},"445":{"start":{"line":928,"column":12},"end":{"line":968,"column":13}},"446":{"start":{"line":929,"column":16},"end":{"line":933,"column":17}},"447":{"start":{"line":930,"column":20},"end":{"line":932,"column":22}},"448":{"start":{"line":934,"column":33},"end":{"line":934,"column":61}},"449":{"start":{"line":935,"column":37},"end":{"line":935,"column":74}},"450":{"start":{"line":936,"column":43},"end":{"line":936,"column":45}},"451":{"start":{"line":937,"column":16},"end":{"line":943,"column":17}},"452":{"start":{"line":938,"column":20},"end":{"line":938,"column":78}},"453":{"start":{"line":940,"column":20},"end":{"line":942,"column":21}},"454":{"start":{"line":940,"column":33},"end":{"line":940,"column":34}},"455":{"start":{"line":941,"column":24},"end":{"line":941,"column":48}},"456":{"start":{"line":944,"column":33},"end":{"line":944,"column":48}},"457":{"start":{"line":945,"column":35},"end":{"line":945,"column":73}},"458":{"start":{"line":946,"column":16},"end":{"line":957,"column":17}},"459":{"start":{"line":946,"column":29},"end":{"line":946,"column":30}},"460":{"start":{"line":947,"column":33},"end":{"line":947,"column":70}},"461":{"start":{"line":948,"column":40},"end":{"line":951,"column":null}},"462":{"start":{"line":953,"column":20},"end":{"line":955,"column":21}},"463":{"start":{"line":954,"column":24},"end":{"line":954,"column":76}},"464":{"start":{"line":956,"column":20},"end":{"line":956,"column":47}},"465":{"start":{"line":959,"column":36},"end":{"line":962,"column":null}},"466":{"start":{"line":964,"column":16},"end":{"line":967,"column":17}},"467":{"start":{"line":965,"column":20},"end":{"line":965,"column":72}},"468":{"start":{"line":966,"column":20},"end":{"line":966,"column":47}},"469":{"start":{"line":970,"column":8},"end":{"line":970,"column":24}},"470":{"start":{"line":974,"column":28},"end":{"line":974,"column":79}},"471":{"start":{"line":975,"column":29},"end":{"line":980,"column":10}},"472":{"start":{"line":982,"column":8},"end":{"line":984,"column":9}},"473":{"start":{"line":983,"column":12},"end":{"line":983,"column":69}},"474":{"start":{"line":985,"column":8},"end":{"line":987,"column":9}},"475":{"start":{"line":986,"column":12},"end":{"line":986,"column":63}},"476":{"start":{"line":988,"column":8},"end":{"line":990,"column":9}},"477":{"start":{"line":989,"column":12},"end":{"line":989,"column":75}},"478":{"start":{"line":991,"column":8},"end":{"line":993,"column":9}},"479":{"start":{"line":992,"column":12},"end":{"line":992,"column":59}},"480":{"start":{"line":995,"column":27},"end":{"line":995,"column":54}},"481":{"start":{"line":997,"column":8},"end":{"line":999,"column":9}},"482":{"start":{"line":998,"column":12},"end":{"line":998,"column":82}},"483":{"start":{"line":1000,"column":8},"end":{"line":1002,"column":9}},"484":{"start":{"line":1001,"column":12},"end":{"line":1001,"column":80}},"485":{"start":{"line":1004,"column":8},"end":{"line":1004,"column":26}},"486":{"start":{"line":1008,"column":8},"end":{"line":1072,"column":11}},"487":{"start":{"line":1009,"column":12},"end":{"line":1071,"column":15}},"488":{"start":{"line":1010,"column":16},"end":{"line":1012,"column":17}},"489":{"start":{"line":1011,"column":20},"end":{"line":1011,"column":39}},"490":{"start":{"line":1013,"column":16},"end":{"line":1070,"column":19}},"491":{"start":{"line":1014,"column":20},"end":{"line":1016,"column":21}},"492":{"start":{"line":1015,"column":24},"end":{"line":1015,"column":48}},"493":{"start":{"line":1017,"column":20},"end":{"line":1069,"column":21}},"494":{"start":{"line":1018,"column":71},"end":{"line":1018,"column":73}},"495":{"start":{"line":1019,"column":46},"end":{"line":1023,"column":26}},"496":{"start":{"line":1025,"column":24},"end":{"line":1027,"column":25}},"497":{"start":{"line":1026,"column":28},"end":{"line":1026,"column":92}},"498":{"start":{"line":1028,"column":24},"end":{"line":1030,"column":25}},"499":{"start":{"line":1029,"column":28},"end":{"line":1029,"column":80}},"500":{"start":{"line":1031,"column":24},"end":{"line":1033,"column":25}},"501":{"start":{"line":1032,"column":28},"end":{"line":1032,"column":86}},"502":{"start":{"line":1035,"column":24},"end":{"line":1038,"column":27}},"503":{"start":{"line":1036,"column":41},"end":{"line":1036,"column":55}},"504":{"start":{"line":1037,"column":28},"end":{"line":1037,"column":57}},"505":{"start":{"line":1041,"column":24},"end":{"line":1047,"column":25}},"506":{"start":{"line":1042,"column":43},"end":{"line":1042,"column":62}},"507":{"start":{"line":1043,"column":28},"end":{"line":1046,"column":29}},"508":{"start":{"line":1044,"column":45},"end":{"line":1044,"column":80}},"509":{"start":{"line":1045,"column":32},"end":{"line":1045,"column":77}},"510":{"start":{"line":1049,"column":24},"end":{"line":1049,"column":47}},"511":{"start":{"line":1050,"column":24},"end":{"line":1052,"column":25}},"512":{"start":{"line":1051,"column":28},"end":{"line":1051,"column":105}},"513":{"start":{"line":1054,"column":24},"end":{"line":1064,"column":26}},"514":{"start":{"line":1055,"column":28},"end":{"line":1063,"column":35}},"515":{"start":{"line":1066,"column":24},"end":{"line":1066,"column":45}},"516":{"start":{"line":1068,"column":24},"end":{"line":1068,"column":41}},"517":{"start":{"line":1076,"column":22},"end":{"line":1076,"column":37}},"518":{"start":{"line":1077,"column":27},"end":{"line":1077,"column":77}},"519":{"start":{"line":1077,"column":57},"end":{"line":1077,"column":76}},"520":{"start":{"line":1078,"column":8},"end":{"line":1078,"column":74}},"521":{"start":{"line":1082,"column":8},"end":{"line":1082,"column":23}},"522":{"start":{"line":1086,"column":8},"end":{"line":1086,"column":33}},"523":{"start":{"line":1087,"column":8},"end":{"line":1089,"column":9}},"524":{"start":{"line":1088,"column":12},"end":{"line":1088,"column":22}},"525":{"start":{"line":1091,"column":8},"end":{"line":1096,"column":9}},"526":{"start":{"line":1092,"column":12},"end":{"line":1094,"column":13}},"527":{"start":{"line":1093,"column":16},"end":{"line":1093,"column":86}},"528":{"start":{"line":1093,"column":65},"end":{"line":1093,"column":84}},"529":{"start":{"line":1095,"column":12},"end":{"line":1095,"column":65}},"530":{"start":{"line":1095,"column":48},"end":{"line":1095,"column":63}},"531":{"start":{"line":1098,"column":8},"end":{"line":1100,"column":9}},"532":{"start":{"line":1099,"column":12},"end":{"line":1099,"column":27}},"533":{"start":{"line":1102,"column":8},"end":{"line":1109,"column":10}},"534":{"start":{"line":1113,"column":8},"end":{"line":1136,"column":9}},"535":{"start":{"line":1114,"column":12},"end":{"line":1114,"column":31}},"536":{"start":{"line":1115,"column":12},"end":{"line":1115,"column":35}},"537":{"start":{"line":1116,"column":12},"end":{"line":1135,"column":15}},"538":{"start":{"line":1117,"column":16},"end":{"line":1134,"column":25}},"539":{"start":{"line":1117,"column":38},"end":{"line":1134,"column":19}},"540":{"start":{"line":1118,"column":20},"end":{"line":1132,"column":21}},"541":{"start":{"line":1119,"column":24},"end":{"line":1119,"column":58}},"542":{"start":{"line":1120,"column":24},"end":{"line":1128,"column":25}},"543":{"start":{"line":1121,"column":28},"end":{"line":1127,"column":31}},"544":{"start":{"line":1122,"column":45},"end":{"line":1122,"column":79}},"545":{"start":{"line":1123,"column":32},"end":{"line":1126,"column":33}},"546":{"start":{"line":1124,"column":36},"end":{"line":1124,"column":78}},"547":{"start":{"line":1125,"column":36},"end":{"line":1125,"column":65}},"548":{"start":{"line":1130,"column":24},"end":{"line":1130,"column":47}},"549":{"start":{"line":1131,"column":24},"end":{"line":1131,"column":100}},"550":{"start":{"line":1133,"column":20},"end":{"line":1133,"column":34}},"551":{"start":{"line":1140,"column":8},"end":{"line":1150,"column":9}},"552":{"start":{"line":1141,"column":12},"end":{"line":1143,"column":13}},"553":{"start":{"line":1142,"column":16},"end":{"line":1142,"column":35}},"554":{"start":{"line":1144,"column":12},"end":{"line":1148,"column":13}},"555":{"start":{"line":1145,"column":16},"end":{"line":1145,"column":76}},"556":{"start":{"line":1145,"column":63},"end":{"line":1145,"column":73}},"557":{"start":{"line":1149,"column":12},"end":{"line":1149,"column":27}},"558":{"start":{"line":1154,"column":8},"end":{"line":1154,"column":43}},"559":{"start":{"line":1155,"column":8},"end":{"line":1155,"column":36}},"560":{"start":{"line":1156,"column":8},"end":{"line":1156,"column":23}},"561":{"start":{"line":1160,"column":8},"end":{"line":1160,"column":44}},"562":{"start":{"line":1164,"column":8},"end":{"line":1164,"column":31}},"563":{"start":{"line":1165,"column":8},"end":{"line":1165,"column":28}},"564":{"start":{"line":1166,"column":8},"end":{"line":1166,"column":31}},"565":{"start":{"line":1167,"column":8},"end":{"line":1167,"column":42}},"566":{"start":{"line":1171,"column":8},"end":{"line":1171,"column":31}},"567":{"start":{"line":1172,"column":8},"end":{"line":1172,"column":28}},"568":{"start":{"line":1173,"column":8},"end":{"line":1173,"column":23}},"569":{"start":{"line":1177,"column":8},"end":{"line":1177,"column":30}},"570":{"start":{"line":739,"column":0},"end":{"line":739,"column":13}}},"fnMap":{"0":{"name":"(anonymous_16)","decl":{"start":{"line":12,"column":0},"end":{"line":12,"column":12}},"loc":{"start":{"line":12,"column":22},"end":{"line":17,"column":1}}},"1":{"name":"(anonymous_17)","decl":{"start":{"line":19,"column":0},"end":{"line":19,"column":12}},"loc":{"start":{"line":19,"column":22},"end":{"line":23,"column":1}}},"2":{"name":"(anonymous_18)","decl":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"loc":{"start":{"line":38,"column":29},"end":{"line":47,"column":5}}},"3":{"name":"(anonymous_19)","decl":{"start":{"line":55,"column":4},"end":{"line":55,"column":23}},"loc":{"start":{"line":55,"column":45},"end":{"line":55,"column":49}}},"4":{"name":"(anonymous_20)","decl":{"start":{"line":57,"column":4},"end":{"line":57,"column":12}},"loc":{"start":{"line":57,"column":12},"end":{"line":59,"column":5}}},"5":{"name":"(anonymous_21)","decl":{"start":{"line":61,"column":4},"end":{"line":61,"column":10}},"loc":{"start":{"line":61,"column":10},"end":{"line":63,"column":5}}},"6":{"name":"(anonymous_22)","decl":{"start":{"line":65,"column":4},"end":{"line":65,"column":17}},"loc":{"start":{"line":65,"column":17},"end":{"line":67,"column":5}}},"7":{"name":"(anonymous_23)","decl":{"start":{"line":69,"column":4},"end":{"line":69,"column":15}},"loc":{"start":{"line":69,"column":15},"end":{"line":71,"column":5}}},"8":{"name":"(anonymous_24)","decl":{"start":{"line":73,"column":4},"end":{"line":73,"column":15}},"loc":{"start":{"line":73,"column":15},"end":{"line":75,"column":5}}},"9":{"name":"(anonymous_25)","decl":{"start":{"line":77,"column":4},"end":{"line":77,"column":16}},"loc":{"start":{"line":77,"column":16},"end":{"line":79,"column":5}}},"10":{"name":"(anonymous_26)","decl":{"start":{"line":81,"column":4},"end":{"line":81,"column":13}},"loc":{"start":{"line":81,"column":34},"end":{"line":83,"column":5}}},"11":{"name":"parseInteger","decl":{"start":{"line":86,"column":9},"end":{"line":86,"column":21}},"loc":{"start":{"line":86,"column":35},"end":{"line":100,"column":1}}},"12":{"name":"parseDimIndex","decl":{"start":{"line":102,"column":9},"end":{"line":102,"column":22}},"loc":{"start":{"line":102,"column":54},"end":{"line":137,"column":1}}},"13":{"name":"(anonymous_29)","decl":{"start":{"line":104,"column":46},"end":{"line":104,"column":47}},"loc":{"start":{"line":104,"column":53},"end":{"line":104,"column":61}}},"14":{"name":"(anonymous_30)","decl":{"start":{"line":112,"column":46},"end":{"line":112,"column":47}},"loc":{"start":{"line":112,"column":53},"end":{"line":112,"column":68}}},"15":{"name":"(anonymous_31)","decl":{"start":{"line":140,"column":4},"end":{"line":140,"column":null}},"loc":{"start":{"line":143,"column":28},"end":{"line":144,"column":8}}},"16":{"name":"(anonymous_32)","decl":{"start":{"line":162,"column":4},"end":{"line":162,"column":16}},"loc":{"start":{"line":162,"column":28},"end":{"line":171,"column":5}}},"17":{"name":"(anonymous_33)","decl":{"start":{"line":173,"column":4},"end":{"line":173,"column":15}},"loc":{"start":{"line":173,"column":15},"end":{"line":181,"column":5}}},"18":{"name":"(anonymous_34)","decl":{"start":{"line":183,"column":4},"end":{"line":183,"column":15}},"loc":{"start":{"line":183,"column":15},"end":{"line":185,"column":5}}},"19":{"name":"(anonymous_35)","decl":{"start":{"line":187,"column":4},"end":{"line":187,"column":15}},"loc":{"start":{"line":187,"column":36},"end":{"line":190,"column":5}}},"20":{"name":"(anonymous_36)","decl":{"start":{"line":189,"column":27},"end":{"line":189,"column":28}},"loc":{"start":{"line":189,"column":48},"end":{"line":189,"column":76}}},"21":{"name":"(anonymous_37)","decl":{"start":{"line":192,"column":4},"end":{"line":192,"column":12}},"loc":{"start":{"line":192,"column":28},"end":{"line":195,"column":5}}},"22":{"name":"(anonymous_38)","decl":{"start":{"line":194,"column":27},"end":{"line":194,"column":28}},"loc":{"start":{"line":194,"column":48},"end":{"line":194,"column":76}}},"23":{"name":"(anonymous_39)","decl":{"start":{"line":197,"column":4},"end":{"line":197,"column":12}},"loc":{"start":{"line":197,"column":41},"end":{"line":203,"column":5}}},"24":{"name":"(anonymous_40)","decl":{"start":{"line":205,"column":4},"end":{"line":205,"column":14}},"loc":{"start":{"line":205,"column":29},"end":{"line":207,"column":5}}},"25":{"name":"(anonymous_41)","decl":{"start":{"line":209,"column":4},"end":{"line":209,"column":13}},"loc":{"start":{"line":209,"column":13},"end":{"line":211,"column":5}}},"26":{"name":"(anonymous_42)","decl":{"start":{"line":213,"column":4},"end":{"line":213,"column":10}},"loc":{"start":{"line":213,"column":10},"end":{"line":235,"column":5}}},"27":{"name":"(anonymous_43)","decl":{"start":{"line":214,"column":27},"end":{"line":214,"column":28}},"loc":{"start":{"line":214,"column":47},"end":{"line":234,"column":9}}},"28":{"name":"(anonymous_44)","decl":{"start":{"line":222,"column":24},"end":{"line":222,"column":25}},"loc":{"start":{"line":222,"column":40},"end":{"line":226,"column":25}}},"29":{"name":"(anonymous_45)","decl":{"start":{"line":224,"column":50},"end":{"line":224,"column":51}},"loc":{"start":{"line":224,"column":61},"end":{"line":224,"column":75}}},"30":{"name":"(anonymous_46)","decl":{"start":{"line":227,"column":24},"end":{"line":227,"column":25}},"loc":{"start":{"line":227,"column":39},"end":{"line":229,"column":25}}},"31":{"name":"(anonymous_47)","decl":{"start":{"line":237,"column":4},"end":{"line":237,"column":12}},"loc":{"start":{"line":237,"column":12},"end":{"line":239,"column":5}}},"32":{"name":"(anonymous_48)","decl":{"start":{"line":241,"column":4},"end":{"line":241,"column":16}},"loc":{"start":{"line":241,"column":16},"end":{"line":254,"column":5}}},"33":{"name":"(anonymous_49)","decl":{"start":{"line":250,"column":30},"end":{"line":250,"column":31}},"loc":{"start":{"line":250,"column":45},"end":{"line":252,"column":9}}},"34":{"name":"(anonymous_50)","decl":{"start":{"line":256,"column":4},"end":{"line":256,"column":15}},"loc":{"start":{"line":256,"column":30},"end":{"line":262,"column":5}}},"35":{"name":"(anonymous_51)","decl":{"start":{"line":260,"column":52},"end":{"line":260,"column":53}},"loc":{"start":{"line":260,"column":59},"end":{"line":260,"column":77}}},"36":{"name":"(anonymous_52)","decl":{"start":{"line":278,"column":4},"end":{"line":278,"column":23}},"loc":{"start":{"line":278,"column":48},"end":{"line":287,"column":5}}},"37":{"name":"(anonymous_53)","decl":{"start":{"line":289,"column":4},"end":{"line":289,"column":15}},"loc":{"start":{"line":289,"column":15},"end":{"line":297,"column":5}}},"38":{"name":"(anonymous_54)","decl":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"loc":{"start":{"line":299,"column":15},"end":{"line":301,"column":5}}},"39":{"name":"(anonymous_55)","decl":{"start":{"line":303,"column":4},"end":{"line":303,"column":15}},"loc":{"start":{"line":303,"column":36},"end":{"line":306,"column":5}}},"40":{"name":"(anonymous_56)","decl":{"start":{"line":305,"column":27},"end":{"line":305,"column":28}},"loc":{"start":{"line":305,"column":48},"end":{"line":305,"column":76}}},"41":{"name":"(anonymous_57)","decl":{"start":{"line":308,"column":4},"end":{"line":308,"column":12}},"loc":{"start":{"line":308,"column":28},"end":{"line":311,"column":5}}},"42":{"name":"(anonymous_58)","decl":{"start":{"line":310,"column":27},"end":{"line":310,"column":28}},"loc":{"start":{"line":310,"column":48},"end":{"line":310,"column":76}}},"43":{"name":"(anonymous_59)","decl":{"start":{"line":313,"column":4},"end":{"line":313,"column":12}},"loc":{"start":{"line":313,"column":41},"end":{"line":315,"column":5}}},"44":{"name":"(anonymous_60)","decl":{"start":{"line":317,"column":4},"end":{"line":317,"column":14}},"loc":{"start":{"line":317,"column":29},"end":{"line":319,"column":5}}},"45":{"name":"(anonymous_61)","decl":{"start":{"line":321,"column":4},"end":{"line":321,"column":13}},"loc":{"start":{"line":321,"column":13},"end":{"line":323,"column":5}}},"46":{"name":"(anonymous_62)","decl":{"start":{"line":325,"column":4},"end":{"line":325,"column":10}},"loc":{"start":{"line":325,"column":10},"end":{"line":327,"column":5}}},"47":{"name":"(anonymous_63)","decl":{"start":{"line":329,"column":4},"end":{"line":329,"column":16}},"loc":{"start":{"line":329,"column":35},"end":{"line":342,"column":5}}},"48":{"name":"(anonymous_64)","decl":{"start":{"line":338,"column":30},"end":{"line":338,"column":31}},"loc":{"start":{"line":338,"column":45},"end":{"line":340,"column":9}}},"49":{"name":"(anonymous_65)","decl":{"start":{"line":344,"column":4},"end":{"line":344,"column":15}},"loc":{"start":{"line":344,"column":30},"end":{"line":350,"column":5}}},"50":{"name":"(anonymous_66)","decl":{"start":{"line":348,"column":52},"end":{"line":348,"column":53}},"loc":{"start":{"line":348,"column":59},"end":{"line":348,"column":77}}},"51":{"name":"(anonymous_67)","decl":{"start":{"line":371,"column":4},"end":{"line":371,"column":23}},"loc":{"start":{"line":371,"column":48},"end":{"line":386,"column":5}}},"52":{"name":"(anonymous_68)","decl":{"start":{"line":388,"column":4},"end":{"line":388,"column":9}},"loc":{"start":{"line":388,"column":9},"end":{"line":390,"column":5}}},"53":{"name":"(anonymous_69)","decl":{"start":{"line":392,"column":4},"end":{"line":392,"column":15}},"loc":{"start":{"line":392,"column":45},"end":{"line":394,"column":5}}},"54":{"name":"(anonymous_70)","decl":{"start":{"line":396,"column":4},"end":{"line":396,"column":14}},"loc":{"start":{"line":396,"column":59},"end":{"line":409,"column":5}}},"55":{"name":"(anonymous_71)","decl":{"start":{"line":397,"column":27},"end":{"line":397,"column":28}},"loc":{"start":{"line":397,"column":47},"end":{"line":408,"column":9}}},"56":{"name":"(anonymous_72)","decl":{"start":{"line":411,"column":4},"end":{"line":411,"column":15}},"loc":{"start":{"line":411,"column":15},"end":{"line":444,"column":5}}},"57":{"name":"(anonymous_73)","decl":{"start":{"line":446,"column":4},"end":{"line":446,"column":15}},"loc":{"start":{"line":446,"column":15},"end":{"line":448,"column":5}}},"58":{"name":"(anonymous_74)","decl":{"start":{"line":450,"column":4},"end":{"line":450,"column":15}},"loc":{"start":{"line":450,"column":36},"end":{"line":453,"column":5}}},"59":{"name":"(anonymous_75)","decl":{"start":{"line":452,"column":27},"end":{"line":452,"column":28}},"loc":{"start":{"line":452,"column":48},"end":{"line":452,"column":76}}},"60":{"name":"(anonymous_76)","decl":{"start":{"line":455,"column":4},"end":{"line":455,"column":12}},"loc":{"start":{"line":455,"column":28},"end":{"line":458,"column":5}}},"61":{"name":"(anonymous_77)","decl":{"start":{"line":457,"column":27},"end":{"line":457,"column":28}},"loc":{"start":{"line":457,"column":48},"end":{"line":457,"column":76}}},"62":{"name":"(anonymous_78)","decl":{"start":{"line":460,"column":4},"end":{"line":460,"column":13}},"loc":{"start":{"line":460,"column":13},"end":{"line":462,"column":5}}},"63":{"name":"(anonymous_79)","decl":{"start":{"line":464,"column":4},"end":{"line":464,"column":16}},"loc":{"start":{"line":464,"column":16},"end":{"line":473,"column":5}}},"64":{"name":"(anonymous_80)","decl":{"start":{"line":475,"column":4},"end":{"line":475,"column":17}},"loc":{"start":{"line":475,"column":17},"end":{"line":498,"column":5}}},"65":{"name":"(anonymous_81)","decl":{"start":{"line":476,"column":27},"end":{"line":476,"column":28}},"loc":{"start":{"line":476,"column":47},"end":{"line":497,"column":9}}},"66":{"name":"(anonymous_82)","decl":{"start":{"line":479,"column":22},"end":{"line":479,"column":23}},"loc":{"start":{"line":479,"column":32},"end":{"line":496,"column":17}}},"67":{"name":"(anonymous_83)","decl":{"start":{"line":500,"column":12},"end":{"line":500,"column":31}},"loc":{"start":{"line":500,"column":48},"end":{"line":529,"column":5}}},"68":{"name":"(anonymous_84)","decl":{"start":{"line":515,"column":27},"end":{"line":515,"column":28}},"loc":{"start":{"line":515,"column":47},"end":{"line":528,"column":9}}},"69":{"name":"(anonymous_85)","decl":{"start":{"line":519,"column":20},"end":{"line":519,"column":21}},"loc":{"start":{"line":519,"column":36},"end":{"line":525,"column":21}}},"70":{"name":"(anonymous_86)","decl":{"start":{"line":521,"column":28},"end":{"line":521,"column":31}},"loc":{"start":{"line":521,"column":33},"end":{"line":521,"column":36}}},"71":{"name":"(anonymous_87)","decl":{"start":{"line":522,"column":28},"end":{"line":522,"column":31}},"loc":{"start":{"line":522,"column":33},"end":{"line":522,"column":36}}},"72":{"name":"(anonymous_88)","decl":{"start":{"line":531,"column":4},"end":{"line":531,"column":10}},"loc":{"start":{"line":531,"column":10},"end":{"line":554,"column":5}}},"73":{"name":"(anonymous_89)","decl":{"start":{"line":552,"column":30},"end":{"line":552,"column":31}},"loc":{"start":{"line":552,"column":41},"end":{"line":552,"column":55}}},"74":{"name":"(anonymous_90)","decl":{"start":{"line":556,"column":4},"end":{"line":556,"column":16}},"loc":{"start":{"line":556,"column":35},"end":{"line":569,"column":5}}},"75":{"name":"(anonymous_91)","decl":{"start":{"line":565,"column":30},"end":{"line":565,"column":31}},"loc":{"start":{"line":565,"column":45},"end":{"line":567,"column":9}}},"76":{"name":"(anonymous_92)","decl":{"start":{"line":571,"column":4},"end":{"line":571,"column":15}},"loc":{"start":{"line":571,"column":30},"end":{"line":579,"column":5}}},"77":{"name":"(anonymous_93)","decl":{"start":{"line":576,"column":49},"end":{"line":576,"column":50}},"loc":{"start":{"line":576,"column":56},"end":{"line":576,"column":74}}},"78":{"name":"(anonymous_94)","decl":{"start":{"line":596,"column":4},"end":{"line":596,"column":23}},"loc":{"start":{"line":596,"column":57},"end":{"line":627,"column":5}}},"79":{"name":"(anonymous_95)","decl":{"start":{"line":629,"column":4},"end":{"line":629,"column":15}},"loc":{"start":{"line":629,"column":15},"end":{"line":675,"column":5}}},"80":{"name":"(anonymous_96)","decl":{"start":{"line":677,"column":4},"end":{"line":677,"column":17}},"loc":{"start":{"line":677,"column":17},"end":{"line":701,"column":5}}},"81":{"name":"(anonymous_97)","decl":{"start":{"line":678,"column":27},"end":{"line":678,"column":28}},"loc":{"start":{"line":678,"column":47},"end":{"line":700,"column":9}}},"82":{"name":"(anonymous_98)","decl":{"start":{"line":681,"column":20},"end":{"line":681,"column":21}},"loc":{"start":{"line":681,"column":33},"end":{"line":687,"column":21}}},"83":{"name":"(anonymous_99)","decl":{"start":{"line":692,"column":26},"end":{"line":692,"column":27}},"loc":{"start":{"line":692,"column":36},"end":{"line":698,"column":21}}},"84":{"name":"(anonymous_100)","decl":{"start":{"line":703,"column":4},"end":{"line":703,"column":16}},"loc":{"start":{"line":703,"column":16},"end":{"line":717,"column":5}}},"85":{"name":"(anonymous_101)","decl":{"start":{"line":719,"column":4},"end":{"line":719,"column":13}},"loc":{"start":{"line":719,"column":13},"end":{"line":721,"column":5}}},"86":{"name":"(anonymous_102)","decl":{"start":{"line":723,"column":4},"end":{"line":723,"column":16}},"loc":{"start":{"line":723,"column":35},"end":{"line":728,"column":5}}},"87":{"name":"(anonymous_103)","decl":{"start":{"line":730,"column":4},"end":{"line":730,"column":15}},"loc":{"start":{"line":730,"column":30},"end":{"line":732,"column":5}}},"88":{"name":"(anonymous_104)","decl":{"start":{"line":739,"column":0},"end":{"line":739,"column":13}},"loc":{"start":{"line":739,"column":0},"end":{"line":1181,"column":1}}},"89":{"name":"(anonymous_105)","decl":{"start":{"line":748,"column":4},"end":{"line":748,"column":11}},"loc":{"start":{"line":748,"column":11},"end":{"line":750,"column":5}}},"90":{"name":"(anonymous_106)","decl":{"start":{"line":752,"column":4},"end":{"line":752,"column":16}},"loc":{"start":{"line":752,"column":16},"end":{"line":758,"column":5}}},"91":{"name":"(anonymous_107)","decl":{"start":{"line":754,"column":34},"end":{"line":754,"column":35}},"loc":{"start":{"line":754,"column":49},"end":{"line":756,"column":9}}},"92":{"name":"(anonymous_108)","decl":{"start":{"line":760,"column":4},"end":{"line":760,"column":16}},"loc":{"start":{"line":760,"column":55},"end":{"line":843,"column":5}}},"93":{"name":"(anonymous_109)","decl":{"start":{"line":762,"column":22},"end":{"line":762,"column":23}},"loc":{"start":{"line":762,"column":32},"end":{"line":841,"column":9}}},"94":{"name":"(anonymous_110)","decl":{"start":{"line":792,"column":62},"end":{"line":792,"column":63}},"loc":{"start":{"line":792,"column":79},"end":{"line":799,"column":17}}},"95":{"name":"(anonymous_111)","decl":{"start":{"line":845,"column":4},"end":{"line":845,"column":19}},"loc":{"start":{"line":845,"column":52},"end":{"line":906,"column":5}}},"96":{"name":"(anonymous_112)","decl":{"start":{"line":847,"column":29},"end":{"line":847,"column":30}},"loc":{"start":{"line":847,"column":37},"end":{"line":903,"column":9}}},"97":{"name":"(anonymous_113)","decl":{"start":{"line":904,"column":23},"end":{"line":904,"column":24}},"loc":{"start":{"line":904,"column":34},"end":{"line":904,"column":88}}},"98":{"name":"(anonymous_114)","decl":{"start":{"line":908,"column":4},"end":{"line":908,"column":18}},"loc":{"start":{"line":908,"column":50},"end":{"line":971,"column":5}}},"99":{"name":"(anonymous_115)","decl":{"start":{"line":913,"column":28},"end":{"line":913,"column":29}},"loc":{"start":{"line":913,"column":40},"end":{"line":969,"column":9}}},"100":{"name":"(anonymous_116)","decl":{"start":{"line":973,"column":4},"end":{"line":973,"column":20}},"loc":{"start":{"line":973,"column":54},"end":{"line":1005,"column":5}}},"101":{"name":"(anonymous_117)","decl":{"start":{"line":1007,"column":4},"end":{"line":1007,"column":12}},"loc":{"start":{"line":1007,"column":28},"end":{"line":1073,"column":5}}},"102":{"name":"(anonymous_118)","decl":{"start":{"line":1008,"column":27},"end":{"line":1008,"column":28}},"loc":{"start":{"line":1008,"column":47},"end":{"line":1072,"column":9}}},"103":{"name":"(anonymous_119)","decl":{"start":{"line":1009,"column":41},"end":{"line":1009,"column":42}},"loc":{"start":{"line":1009,"column":55},"end":{"line":1071,"column":13}}},"104":{"name":"(anonymous_120)","decl":{"start":{"line":1013,"column":41},"end":{"line":1013,"column":42}},"loc":{"start":{"line":1013,"column":72},"end":{"line":1070,"column":17}}},"105":{"name":"(anonymous_121)","decl":{"start":{"line":1035,"column":72},"end":{"line":1035,"column":73}},"loc":{"start":{"line":1035,"column":88},"end":{"line":1038,"column":25}}},"106":{"name":"(anonymous_122)","decl":{"start":{"line":1054,"column":47},"end":{"line":1054,"column":48}},"loc":{"start":{"line":1055,"column":28},"end":{"line":1063,"column":35}}},"107":{"name":"(anonymous_123)","decl":{"start":{"line":1075,"column":4},"end":{"line":1075,"column":19}},"loc":{"start":{"line":1075,"column":32},"end":{"line":1079,"column":5}}},"108":{"name":"(anonymous_124)","decl":{"start":{"line":1077,"column":50},"end":{"line":1077,"column":51}},"loc":{"start":{"line":1077,"column":57},"end":{"line":1077,"column":76}}},"109":{"name":"(anonymous_125)","decl":{"start":{"line":1081,"column":4},"end":{"line":1081,"column":15}},"loc":{"start":{"line":1081,"column":33},"end":{"line":1083,"column":5}}},"110":{"name":"(anonymous_126)","decl":{"start":{"line":1085,"column":4},"end":{"line":1085,"column":15}},"loc":{"start":{"line":1085,"column":34},"end":{"line":1110,"column":5}}},"111":{"name":"(anonymous_127)","decl":{"start":{"line":1093,"column":54},"end":{"line":1093,"column":55}},"loc":{"start":{"line":1093,"column":65},"end":{"line":1093,"column":84}}},"112":{"name":"(anonymous_128)","decl":{"start":{"line":1095,"column":41},"end":{"line":1095,"column":42}},"loc":{"start":{"line":1095,"column":48},"end":{"line":1095,"column":63}}},"113":{"name":"(anonymous_129)","decl":{"start":{"line":1112,"column":18},"end":{"line":1112,"column":23}},"loc":{"start":{"line":1112,"column":23},"end":{"line":1137,"column":null}}},"114":{"name":"(anonymous_131)","decl":{"start":{"line":1116,"column":31},"end":{"line":1116,"column":32}},"loc":{"start":{"line":1116,"column":43},"end":{"line":1135,"column":13}}},"115":{"name":"(anonymous_132)","decl":{"start":{"line":1117,"column":27},"end":{"line":1117,"column":36}},"loc":{"start":{"line":1117,"column":38},"end":{"line":1134,"column":19}}},"116":{"name":"(anonymous_133)","decl":{"start":{"line":1117,"column":38},"end":{"line":1117,"column":null}},"loc":{"start":{"line":1117,"column":38},"end":{"line":1134,"column":17}}},"117":{"name":"(anonymous_134)","decl":{"start":{"line":1121,"column":57},"end":{"line":1121,"column":58}},"loc":{"start":{"line":1121,"column":69},"end":{"line":1127,"column":29}}},"118":{"name":"(anonymous_135)","decl":{"start":{"line":1139,"column":18},"end":{"line":1139,"column":25}},"loc":{"start":{"line":1139,"column":25},"end":{"line":1151,"column":null}}},"119":{"name":"(anonymous_137)","decl":{"start":{"line":1145,"column":56},"end":{"line":1145,"column":57}},"loc":{"start":{"line":1145,"column":63},"end":{"line":1145,"column":73}}},"120":{"name":"(anonymous_138)","decl":{"start":{"line":1153,"column":4},"end":{"line":1153,"column":22}},"loc":{"start":{"line":1153,"column":33},"end":{"line":1157,"column":5}}},"121":{"name":"(anonymous_139)","decl":{"start":{"line":1159,"column":4},"end":{"line":1159,"column":24}},"loc":{"start":{"line":1159,"column":35},"end":{"line":1161,"column":5}}},"122":{"name":"(anonymous_140)","decl":{"start":{"line":1163,"column":4},"end":{"line":1163,"column":23}},"loc":{"start":{"line":1163,"column":58},"end":{"line":1168,"column":5}}},"123":{"name":"(anonymous_141)","decl":{"start":{"line":1170,"column":4},"end":{"line":1170,"column":26}},"loc":{"start":{"line":1170,"column":26},"end":{"line":1174,"column":5}}},"124":{"name":"(anonymous_142)","decl":{"start":{"line":1176,"column":4},"end":{"line":1176,"column":16}},"loc":{"start":{"line":1176,"column":16},"end":{"line":1178,"column":5}}},"125":{"name":"(anonymous_143)","decl":{"start":{"line":1180,"column":4},"end":{"line":1180,"column":18}},"loc":{"start":{"line":1180,"column":18},"end":{"line":1180,"column":29}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":12},"end":{"line":12,"column":null}},"type":"binary-expr","locations":[{"start":{"line":12,"column":12},"end":{"line":12,"column":22}},{"start":{"line":12,"column":22},"end":{"line":12,"column":null}}]},"1":{"loc":{"start":{"line":19,"column":12},"end":{"line":19,"column":null}},"type":"binary-expr","locations":[{"start":{"line":19,"column":12},"end":{"line":19,"column":22}},{"start":{"line":19,"column":22},"end":{"line":19,"column":null}}]},"2":{"loc":{"start":{"line":46,"column":23},"end":{"line":46,"column":69}},"type":"binary-expr","locations":[{"start":{"line":46,"column":24},"end":{"line":46,"column":59}},{"start":{"line":46,"column":64},"end":{"line":46,"column":69}}]},"3":{"loc":{"start":{"line":46,"column":24},"end":{"line":46,"column":59}},"type":"cond-expr","locations":[{"start":{"line":46,"column":31},"end":{"line":46,"column":47}},{"start":{"line":46,"column":50},"end":{"line":46,"column":59}}]},"4":{"loc":{"start":{"line":87,"column":4},"end":{"line":89,"column":5}},"type":"if","locations":[{"start":{"line":87,"column":4},"end":{"line":89,"column":5}},{"start":{},"end":{}}]},"5":{"loc":{"start":{"line":90,"column":4},"end":{"line":92,"column":5}},"type":"if","locations":[{"start":{"line":90,"column":4},"end":{"line":92,"column":5}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"type":"if","locations":[{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},{"start":{},"end":{}}]},"7":{"loc":{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},"type":"if","locations":[{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},{"start":{},"end":{}}]},"8":{"loc":{"start":{"line":103,"column":4},"end":{"line":109,"column":5}},"type":"if","locations":[{"start":{"line":103,"column":4},"end":{"line":109,"column":5}},{"start":{},"end":{}}]},"9":{"loc":{"start":{"line":105,"column":8},"end":{"line":107,"column":9}},"type":"if","locations":[{"start":{"line":105,"column":8},"end":{"line":107,"column":9}},{"start":{},"end":{}}]},"10":{"loc":{"start":{"line":111,"column":4},"end":{"line":122,"column":5}},"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":122,"column":5}},{"start":{},"end":{}}]},"11":{"loc":{"start":{"line":114,"column":8},"end":{"line":116,"column":9}},"type":"if","locations":[{"start":{"line":114,"column":8},"end":{"line":116,"column":9}},{"start":{},"end":{}}]},"12":{"loc":{"start":{"line":124,"column":4},"end":{"line":134,"column":5}},"type":"if","locations":[{"start":{"line":124,"column":4},"end":{"line":134,"column":5}},{"start":{},"end":{}}]},"13":{"loc":{"start":{"line":126,"column":8},"end":{"line":128,"column":9}},"type":"if","locations":[{"start":{"line":126,"column":8},"end":{"line":128,"column":9}},{"start":{},"end":{}}]},"14":{"loc":{"start":{"line":168,"column":25},"end":{"line":168,"column":48}},"type":"binary-expr","locations":[{"start":{"line":168,"column":25},"end":{"line":168,"column":42}},{"start":{"line":168,"column":46},"end":{"line":168,"column":48}}]},"15":{"loc":{"start":{"line":169,"column":26},"end":{"line":169,"column":49}},"type":"binary-expr","locations":[{"start":{"line":169,"column":26},"end":{"line":169,"column":44}},{"start":{"line":169,"column":48},"end":{"line":169,"column":49}}]},"16":{"loc":{"start":{"line":170,"column":20},"end":{"line":170,"column":38}},"type":"binary-expr","locations":[{"start":{"line":170,"column":20},"end":{"line":170,"column":32}},{"start":{"line":170,"column":36},"end":{"line":170,"column":38}}]},"17":{"loc":{"start":{"line":177,"column":12},"end":{"line":177,"column":112}},"type":"cond-expr","locations":[{"start":{"line":177,"column":28},"end":{"line":177,"column":68}},{"start":{"line":177,"column":71},"end":{"line":177,"column":112}}]},"18":{"loc":{"start":{"line":189,"column":48},"end":{"line":189,"column":76}},"type":"cond-expr","locations":[{"start":{"line":189,"column":70},"end":{"line":189,"column":71}},{"start":{"line":189,"column":74},"end":{"line":189,"column":76}}]},"19":{"loc":{"start":{"line":194,"column":48},"end":{"line":194,"column":76}},"type":"cond-expr","locations":[{"start":{"line":194,"column":70},"end":{"line":194,"column":71}},{"start":{"line":194,"column":74},"end":{"line":194,"column":76}}]},"20":{"loc":{"start":{"line":215,"column":12},"end":{"line":233,"column":13}},"type":"if","locations":[{"start":{"line":215,"column":12},"end":{"line":233,"column":13}},{"start":{"line":231,"column":19},"end":{"line":233,"column":13}}]},"21":{"loc":{"start":{"line":219,"column":32},"end":{"line":219,"column":83}},"type":"cond-expr","locations":[{"start":{"line":219,"column":59},"end":{"line":219,"column":64}},{"start":{"line":219,"column":67},"end":{"line":219,"column":83}}]},"22":{"loc":{"start":{"line":243,"column":8},"end":{"line":249,"column":9}},"type":"if","locations":[{"start":{"line":243,"column":8},"end":{"line":249,"column":9}},{"start":{},"end":{}}]},"23":{"loc":{"start":{"line":243,"column":12},"end":{"line":243,"column":62}},"type":"binary-expr","locations":[{"start":{"line":243,"column":12},"end":{"line":243,"column":45}},{"start":{"line":243,"column":49},"end":{"line":243,"column":62}}]},"24":{"loc":{"start":{"line":257,"column":8},"end":{"line":259,"column":9}},"type":"if","locations":[{"start":{"line":257,"column":8},"end":{"line":259,"column":9}},{"start":{},"end":{}}]},"25":{"loc":{"start":{"line":261,"column":15},"end":{"line":261,"column":62}},"type":"cond-expr","locations":[{"start":{"line":261,"column":23},"end":{"line":261,"column":55}},{"start":{"line":261,"column":58},"end":{"line":261,"column":62}}]},"26":{"loc":{"start":{"line":283,"column":26},"end":{"line":283,"column":68}},"type":"binary-expr","locations":[{"start":{"line":283,"column":26},"end":{"line":283,"column":44}},{"start":{"line":283,"column":48},"end":{"line":283,"column":68}}]},"27":{"loc":{"start":{"line":284,"column":20},"end":{"line":284,"column":47}},"type":"binary-expr","locations":[{"start":{"line":284,"column":20},"end":{"line":284,"column":32}},{"start":{"line":284,"column":36},"end":{"line":284,"column":47}}]},"28":{"loc":{"start":{"line":285,"column":26},"end":{"line":285,"column":65}},"type":"binary-expr","locations":[{"start":{"line":285,"column":26},"end":{"line":285,"column":44}},{"start":{"line":285,"column":48},"end":{"line":285,"column":65}}]},"29":{"loc":{"start":{"line":293,"column":12},"end":{"line":293,"column":112}},"type":"cond-expr","locations":[{"start":{"line":293,"column":28},"end":{"line":293,"column":68}},{"start":{"line":293,"column":71},"end":{"line":293,"column":112}}]},"30":{"loc":{"start":{"line":305,"column":48},"end":{"line":305,"column":76}},"type":"cond-expr","locations":[{"start":{"line":305,"column":70},"end":{"line":305,"column":71}},{"start":{"line":305,"column":74},"end":{"line":305,"column":76}}]},"31":{"loc":{"start":{"line":310,"column":48},"end":{"line":310,"column":76}},"type":"cond-expr","locations":[{"start":{"line":310,"column":70},"end":{"line":310,"column":71}},{"start":{"line":310,"column":74},"end":{"line":310,"column":76}}]},"32":{"loc":{"start":{"line":322,"column":15},"end":{"line":322,"column":88}},"type":"cond-expr","locations":[{"start":{"line":322,"column":51},"end":{"line":322,"column":62}},{"start":{"line":322,"column":65},"end":{"line":322,"column":88}}]},"33":{"loc":{"start":{"line":331,"column":8},"end":{"line":337,"column":9}},"type":"if","locations":[{"start":{"line":331,"column":8},"end":{"line":337,"column":9}},{"start":{},"end":{}}]},"34":{"loc":{"start":{"line":331,"column":12},"end":{"line":331,"column":62}},"type":"binary-expr","locations":[{"start":{"line":331,"column":12},"end":{"line":331,"column":45}},{"start":{"line":331,"column":49},"end":{"line":331,"column":62}}]},"35":{"loc":{"start":{"line":345,"column":8},"end":{"line":347,"column":9}},"type":"if","locations":[{"start":{"line":345,"column":8},"end":{"line":347,"column":9}},{"start":{},"end":{}}]},"36":{"loc":{"start":{"line":349,"column":15},"end":{"line":349,"column":62}},"type":"cond-expr","locations":[{"start":{"line":349,"column":23},"end":{"line":349,"column":55}},{"start":{"line":349,"column":58},"end":{"line":349,"column":62}}]},"37":{"loc":{"start":{"line":376,"column":26},"end":{"line":376,"column":65}},"type":"binary-expr","locations":[{"start":{"line":376,"column":26},"end":{"line":376,"column":44}},{"start":{"line":376,"column":48},"end":{"line":376,"column":65}}]},"38":{"loc":{"start":{"line":377,"column":20},"end":{"line":377,"column":47}},"type":"binary-expr","locations":[{"start":{"line":377,"column":20},"end":{"line":377,"column":32}},{"start":{"line":377,"column":36},"end":{"line":377,"column":47}}]},"39":{"loc":{"start":{"line":378,"column":26},"end":{"line":378,"column":99}},"type":"cond-expr","locations":[{"start":{"line":378,"column":61},"end":{"line":378,"column":79}},{"start":{"line":378,"column":82},"end":{"line":378,"column":99}}]},"40":{"loc":{"start":{"line":399,"column":12},"end":{"line":403,"column":13}},"type":"if","locations":[{"start":{"line":399,"column":12},"end":{"line":403,"column":13}},{"start":{},"end":{}}]},"41":{"loc":{"start":{"line":413,"column":8},"end":{"line":417,"column":9}},"type":"if","locations":[{"start":{"line":413,"column":8},"end":{"line":417,"column":9}},{"start":{"line":415,"column":15},"end":{"line":417,"column":9}}]},"42":{"loc":{"start":{"line":415,"column":15},"end":{"line":417,"column":9}},"type":"if","locations":[{"start":{"line":415,"column":15},"end":{"line":417,"column":9}},{"start":{},"end":{}}]},"43":{"loc":{"start":{"line":420,"column":8},"end":{"line":434,"column":9}},"type":"if","locations":[{"start":{"line":420,"column":8},"end":{"line":434,"column":9}},{"start":{"line":422,"column":15},"end":{"line":434,"column":9}}]},"44":{"loc":{"start":{"line":423,"column":12},"end":{"line":433,"column":13}},"type":"switch","locations":[{"start":{"line":424,"column":16},"end":{"line":426,"column":26}},{"start":{"line":427,"column":16},"end":{"line":429,"column":26}},{"start":{"line":430,"column":16},"end":{"line":432,"column":26}}]},"45":{"loc":{"start":{"line":437,"column":12},"end":{"line":441,"column":54}},"type":"cond-expr","locations":[{"start":{"line":438,"column":18},"end":{"line":440,"column":63}},{"start":{"line":441,"column":18},"end":{"line":441,"column":54}}]},"46":{"loc":{"start":{"line":437,"column":12},"end":{"line":437,"column":53}},"type":"binary-expr","locations":[{"start":{"line":437,"column":12},"end":{"line":437,"column":25}},{"start":{"line":437,"column":29},"end":{"line":437,"column":53}}]},"47":{"loc":{"start":{"line":438,"column":18},"end":{"line":440,"column":63}},"type":"cond-expr","locations":[{"start":{"line":439,"column":22},"end":{"line":439,"column":62}},{"start":{"line":440,"column":22},"end":{"line":440,"column":63}}]},"48":{"loc":{"start":{"line":447,"column":15},"end":{"line":447,"column":34}},"type":"binary-expr","locations":[{"start":{"line":447,"column":15},"end":{"line":447,"column":28}},{"start":{"line":447,"column":32},"end":{"line":447,"column":34}}]},"49":{"loc":{"start":{"line":452,"column":48},"end":{"line":452,"column":76}},"type":"cond-expr","locations":[{"start":{"line":452,"column":70},"end":{"line":452,"column":71}},{"start":{"line":452,"column":74},"end":{"line":452,"column":76}}]},"50":{"loc":{"start":{"line":457,"column":48},"end":{"line":457,"column":76}},"type":"cond-expr","locations":[{"start":{"line":457,"column":70},"end":{"line":457,"column":71}},{"start":{"line":457,"column":74},"end":{"line":457,"column":76}}]},"51":{"loc":{"start":{"line":461,"column":15},"end":{"line":461,"column":88}},"type":"cond-expr","locations":[{"start":{"line":461,"column":51},"end":{"line":461,"column":62}},{"start":{"line":461,"column":65},"end":{"line":461,"column":88}}]},"52":{"loc":{"start":{"line":465,"column":8},"end":{"line":472,"column":9}},"type":"switch","locations":[{"start":{"line":466,"column":12},"end":{"line":467,"column":52}},{"start":{"line":468,"column":12},"end":{"line":469,"column":75}},{"start":{"line":470,"column":12},"end":{"line":471,"column":68}}]},"53":{"loc":{"start":{"line":481,"column":20},"end":{"line":494,"column":21}},"type":"if","locations":[{"start":{"line":481,"column":20},"end":{"line":494,"column":21}},{"start":{"line":483,"column":27},"end":{"line":494,"column":21}}]},"54":{"loc":{"start":{"line":483,"column":27},"end":{"line":494,"column":21}},"type":"if","locations":[{"start":{"line":483,"column":27},"end":{"line":494,"column":21}},{"start":{"line":485,"column":27},"end":{"line":494,"column":21}}]},"55":{"loc":{"start":{"line":485,"column":27},"end":{"line":494,"column":21}},"type":"if","locations":[{"start":{"line":485,"column":27},"end":{"line":494,"column":21}},{"start":{"line":492,"column":27},"end":{"line":494,"column":21}}]},"56":{"loc":{"start":{"line":487,"column":24},"end":{"line":491,"column":25}},"type":"if","locations":[{"start":{"line":487,"column":24},"end":{"line":491,"column":25}},{"start":{},"end":{}}]},"57":{"loc":{"start":{"line":509,"column":12},"end":{"line":511,"column":13}},"type":"if","locations":[{"start":{"line":509,"column":12},"end":{"line":511,"column":13}},{"start":{},"end":{}}]},"58":{"loc":{"start":{"line":536,"column":8},"end":{"line":550,"column":9}},"type":"switch","locations":[{"start":{"line":537,"column":12},"end":{"line":539,"column":22}},{"start":{"line":540,"column":12},"end":{"line":542,"column":22}},{"start":{"line":543,"column":12},"end":{"line":545,"column":22}},{"start":{"line":546,"column":12},"end":{"line":549,"column":18}}]},"59":{"loc":{"start":{"line":558,"column":8},"end":{"line":564,"column":9}},"type":"if","locations":[{"start":{"line":558,"column":8},"end":{"line":564,"column":9}},{"start":{},"end":{}}]},"60":{"loc":{"start":{"line":558,"column":12},"end":{"line":558,"column":62}},"type":"binary-expr","locations":[{"start":{"line":558,"column":12},"end":{"line":558,"column":45}},{"start":{"line":558,"column":49},"end":{"line":558,"column":62}}]},"61":{"loc":{"start":{"line":572,"column":8},"end":{"line":574,"column":9}},"type":"if","locations":[{"start":{"line":572,"column":8},"end":{"line":574,"column":9}},{"start":{},"end":{}}]},"62":{"loc":{"start":{"line":575,"column":8},"end":{"line":577,"column":9}},"type":"if","locations":[{"start":{"line":575,"column":8},"end":{"line":577,"column":9}},{"start":{},"end":{}}]},"63":{"loc":{"start":{"line":603,"column":8},"end":{"line":613,"column":9}},"type":"if","locations":[{"start":{"line":603,"column":8},"end":{"line":613,"column":9}},{"start":{"line":611,"column":15},"end":{"line":613,"column":9}}]},"64":{"loc":{"start":{"line":604,"column":12},"end":{"line":610,"column":13}},"type":"if","locations":[{"start":{"line":604,"column":12},"end":{"line":610,"column":13}},{"start":{"line":606,"column":19},"end":{"line":610,"column":13}}]},"65":{"loc":{"start":{"line":604,"column":16},"end":{"line":604,"column":103}},"type":"binary-expr","locations":[{"start":{"line":604,"column":16},"end":{"line":604,"column":57}},{"start":{"line":604,"column":61},"end":{"line":604,"column":103}}]},"66":{"loc":{"start":{"line":606,"column":19},"end":{"line":610,"column":13}},"type":"if","locations":[{"start":{"line":606,"column":19},"end":{"line":610,"column":13}},{"start":{"line":608,"column":19},"end":{"line":610,"column":13}}]},"67":{"loc":{"start":{"line":606,"column":23},"end":{"line":606,"column":112}},"type":"binary-expr","locations":[{"start":{"line":606,"column":23},"end":{"line":606,"column":65}},{"start":{"line":606,"column":69},"end":{"line":606,"column":112}}]},"68":{"loc":{"start":{"line":615,"column":8},"end":{"line":624,"column":9}},"type":"if","locations":[{"start":{"line":615,"column":8},"end":{"line":624,"column":9}},{"start":{},"end":{}}]},"69":{"loc":{"start":{"line":638,"column":8},"end":{"line":668,"column":9}},"type":"if","locations":[{"start":{"line":638,"column":8},"end":{"line":668,"column":9}},{"start":{"line":640,"column":15},"end":{"line":668,"column":9}}]},"70":{"loc":{"start":{"line":640,"column":15},"end":{"line":668,"column":9}},"type":"if","locations":[{"start":{"line":640,"column":15},"end":{"line":668,"column":9}},{"start":{"line":642,"column":15},"end":{"line":668,"column":9}}]},"71":{"loc":{"start":{"line":644,"column":12},"end":{"line":660,"column":13}},"type":"switch","locations":[{"start":{"line":645,"column":16},"end":{"line":647,"column":26}},{"start":{"line":648,"column":16},"end":{"line":650,"column":26}},{"start":{"line":651,"column":16},"end":{"line":653,"column":26}},{"start":{"line":654,"column":16},"end":{"line":659,"column":26}}]},"72":{"loc":{"start":{"line":656,"column":24},"end":{"line":658,"column":61}},"type":"cond-expr","locations":[{"start":{"line":657,"column":30},"end":{"line":657,"column":79}},{"start":{"line":658,"column":30},"end":{"line":658,"column":61}}]},"73":{"loc":{"start":{"line":662,"column":12},"end":{"line":667,"column":13}},"type":"if","locations":[{"start":{"line":662,"column":12},"end":{"line":667,"column":13}},{"start":{"line":665,"column":19},"end":{"line":667,"column":13}}]},"74":{"loc":{"start":{"line":662,"column":16},"end":{"line":662,"column":59}},"type":"binary-expr","locations":[{"start":{"line":662,"column":16},"end":{"line":662,"column":32}},{"start":{"line":662,"column":36},"end":{"line":662,"column":59}}]},"75":{"loc":{"start":{"line":670,"column":8},"end":{"line":672,"column":9}},"type":"if","locations":[{"start":{"line":670,"column":8},"end":{"line":672,"column":9}},{"start":{},"end":{}}]},"76":{"loc":{"start":{"line":679,"column":12},"end":{"line":699,"column":13}},"type":"if","locations":[{"start":{"line":679,"column":12},"end":{"line":699,"column":13}},{"start":{"line":689,"column":19},"end":{"line":699,"column":13}}]},"77":{"loc":{"start":{"line":682,"column":24},"end":{"line":684,"column":25}},"type":"if","locations":[{"start":{"line":682,"column":24},"end":{"line":684,"column":25}},{"start":{},"end":{}}]},"78":{"loc":{"start":{"line":694,"column":24},"end":{"line":696,"column":25}},"type":"if","locations":[{"start":{"line":694,"column":24},"end":{"line":696,"column":25}},{"start":{},"end":{}}]},"79":{"loc":{"start":{"line":705,"column":8},"end":{"line":716,"column":9}},"type":"switch","locations":[{"start":{"line":706,"column":12},"end":{"line":707,"column":40}},{"start":{"line":708,"column":12},"end":{"line":709,"column":55}},{"start":{"line":710,"column":12},"end":{"line":711,"column":73}},{"start":{"line":712,"column":12},"end":{"line":715,"column":54}}]},"80":{"loc":{"start":{"line":713,"column":23},"end":{"line":715,"column":53}},"type":"cond-expr","locations":[{"start":{"line":714,"column":22},"end":{"line":714,"column":71}},{"start":{"line":715,"column":22},"end":{"line":715,"column":53}}]},"81":{"loc":{"start":{"line":720,"column":15},"end":{"line":720,"column":88}},"type":"cond-expr","locations":[{"start":{"line":720,"column":51},"end":{"line":720,"column":62}},{"start":{"line":720,"column":65},"end":{"line":720,"column":88}}]},"82":{"loc":{"start":{"line":724,"column":8},"end":{"line":726,"column":9}},"type":"if","locations":[{"start":{"line":724,"column":8},"end":{"line":726,"column":9}},{"start":{},"end":{}}]},"83":{"loc":{"start":{"line":731,"column":15},"end":{"line":731,"column":46}},"type":"cond-expr","locations":[{"start":{"line":731,"column":35},"end":{"line":731,"column":39}},{"start":{"line":731,"column":42},"end":{"line":731,"column":46}}]},"84":{"loc":{"start":{"line":765,"column":32},"end":{"line":765,"column":77}},"type":"cond-expr","locations":[{"start":{"line":765,"column":52},"end":{"line":765,"column":72}},{"start":{"line":765,"column":75},"end":{"line":765,"column":77}}]},"85":{"loc":{"start":{"line":767,"column":12},"end":{"line":787,"column":13}},"type":"if","locations":[{"start":{"line":767,"column":12},"end":{"line":787,"column":13}},{"start":{"line":770,"column":19},"end":{"line":787,"column":13}}]},"86":{"loc":{"start":{"line":767,"column":16},"end":{"line":767,"column":49}},"type":"binary-expr","locations":[{"start":{"line":767,"column":16},"end":{"line":767,"column":31}},{"start":{"line":767,"column":35},"end":{"line":767,"column":49}}]},"87":{"loc":{"start":{"line":770,"column":19},"end":{"line":787,"column":13}},"type":"if","locations":[{"start":{"line":770,"column":19},"end":{"line":787,"column":13}},{"start":{"line":778,"column":19},"end":{"line":787,"column":13}}]},"88":{"loc":{"start":{"line":778,"column":19},"end":{"line":787,"column":13}},"type":"if","locations":[{"start":{"line":778,"column":19},"end":{"line":787,"column":13}},{"start":{"line":783,"column":19},"end":{"line":787,"column":13}}]},"89":{"loc":{"start":{"line":778,"column":23},"end":{"line":778,"column":45}},"type":"binary-expr","locations":[{"start":{"line":778,"column":23},"end":{"line":778,"column":32}},{"start":{"line":778,"column":36},"end":{"line":778,"column":45}}]},"90":{"loc":{"start":{"line":790,"column":12},"end":{"line":800,"column":13}},"type":"if","locations":[{"start":{"line":790,"column":12},"end":{"line":800,"column":13}},{"start":{},"end":{}}]},"91":{"loc":{"start":{"line":793,"column":20},"end":{"line":798,"column":21}},"type":"if","locations":[{"start":{"line":793,"column":20},"end":{"line":798,"column":21}},{"start":{},"end":{}}]},"92":{"loc":{"start":{"line":793,"column":24},"end":{"line":793,"column":65}},"type":"binary-expr","locations":[{"start":{"line":793,"column":24},"end":{"line":793,"column":37}},{"start":{"line":793,"column":41},"end":{"line":793,"column":65}}]},"93":{"loc":{"start":{"line":795,"column":37},"end":{"line":795,"column":88}},"type":"cond-expr","locations":[{"start":{"line":795,"column":59},"end":{"line":795,"column":81}},{"start":{"line":795,"column":84},"end":{"line":795,"column":88}}]},"94":{"loc":{"start":{"line":810,"column":12},"end":{"line":840,"column":13}},"type":"if","locations":[{"start":{"line":810,"column":12},"end":{"line":840,"column":13}},{"start":{"line":838,"column":19},"end":{"line":840,"column":13}}]},"95":{"loc":{"start":{"line":811,"column":16},"end":{"line":815,"column":17}},"type":"if","locations":[{"start":{"line":811,"column":16},"end":{"line":815,"column":17}},{"start":{},"end":{}}]},"96":{"loc":{"start":{"line":819,"column":16},"end":{"line":825,"column":17}},"type":"if","locations":[{"start":{"line":819,"column":16},"end":{"line":825,"column":17}},{"start":{"line":821,"column":23},"end":{"line":825,"column":17}}]},"97":{"loc":{"start":{"line":849,"column":12},"end":{"line":851,"column":13}},"type":"if","locations":[{"start":{"line":849,"column":12},"end":{"line":851,"column":13}},{"start":{},"end":{}}]},"98":{"loc":{"start":{"line":852,"column":12},"end":{"line":854,"column":13}},"type":"if","locations":[{"start":{"line":852,"column":12},"end":{"line":854,"column":13}},{"start":{},"end":{}}]},"99":{"loc":{"start":{"line":855,"column":12},"end":{"line":857,"column":13}},"type":"if","locations":[{"start":{"line":855,"column":12},"end":{"line":857,"column":13}},{"start":{},"end":{}}]},"100":{"loc":{"start":{"line":858,"column":12},"end":{"line":860,"column":13}},"type":"if","locations":[{"start":{"line":858,"column":12},"end":{"line":860,"column":13}},{"start":{},"end":{}}]},"101":{"loc":{"start":{"line":862,"column":12},"end":{"line":902,"column":13}},"type":"if","locations":[{"start":{"line":862,"column":12},"end":{"line":902,"column":13}},{"start":{"line":892,"column":19},"end":{"line":902,"column":13}}]},"102":{"loc":{"start":{"line":863,"column":16},"end":{"line":867,"column":17}},"type":"if","locations":[{"start":{"line":863,"column":16},"end":{"line":867,"column":17}},{"start":{},"end":{}}]},"103":{"loc":{"start":{"line":871,"column":16},"end":{"line":877,"column":17}},"type":"if","locations":[{"start":{"line":871,"column":16},"end":{"line":877,"column":17}},{"start":{"line":873,"column":23},"end":{"line":877,"column":17}}]},"104":{"loc":{"start":{"line":887,"column":20},"end":{"line":889,"column":21}},"type":"if","locations":[{"start":{"line":887,"column":20},"end":{"line":889,"column":21}},{"start":{},"end":{}}]},"105":{"loc":{"start":{"line":887,"column":24},"end":{"line":887,"column":61}},"type":"binary-expr","locations":[{"start":{"line":887,"column":24},"end":{"line":887,"column":34}},{"start":{"line":887,"column":38},"end":{"line":887,"column":61}}]},"106":{"loc":{"start":{"line":898,"column":16},"end":{"line":900,"column":17}},"type":"if","locations":[{"start":{"line":898,"column":16},"end":{"line":900,"column":17}},{"start":{},"end":{}}]},"107":{"loc":{"start":{"line":898,"column":20},"end":{"line":898,"column":57}},"type":"binary-expr","locations":[{"start":{"line":898,"column":20},"end":{"line":898,"column":30}},{"start":{"line":898,"column":34},"end":{"line":898,"column":57}}]},"108":{"loc":{"start":{"line":904,"column":34},"end":{"line":904,"column":88}},"type":"cond-expr","locations":[{"start":{"line":904,"column":56},"end":{"line":904,"column":58}},{"start":{"line":904,"column":61},"end":{"line":904,"column":88}}]},"109":{"loc":{"start":{"line":904,"column":61},"end":{"line":904,"column":88}},"type":"cond-expr","locations":[{"start":{"line":904,"column":83},"end":{"line":904,"column":84}},{"start":{"line":904,"column":87},"end":{"line":904,"column":88}}]},"110":{"loc":{"start":{"line":910,"column":8},"end":{"line":912,"column":9}},"type":"if","locations":[{"start":{"line":910,"column":8},"end":{"line":912,"column":9}},{"start":{},"end":{}}]},"111":{"loc":{"start":{"line":915,"column":12},"end":{"line":917,"column":13}},"type":"if","locations":[{"start":{"line":915,"column":12},"end":{"line":917,"column":13}},{"start":{},"end":{}}]},"112":{"loc":{"start":{"line":918,"column":12},"end":{"line":920,"column":13}},"type":"if","locations":[{"start":{"line":918,"column":12},"end":{"line":920,"column":13}},{"start":{},"end":{}}]},"113":{"loc":{"start":{"line":921,"column":12},"end":{"line":923,"column":13}},"type":"if","locations":[{"start":{"line":921,"column":12},"end":{"line":923,"column":13}},{"start":{},"end":{}}]},"114":{"loc":{"start":{"line":924,"column":12},"end":{"line":926,"column":13}},"type":"if","locations":[{"start":{"line":924,"column":12},"end":{"line":926,"column":13}},{"start":{},"end":{}}]},"115":{"loc":{"start":{"line":928,"column":12},"end":{"line":968,"column":13}},"type":"if","locations":[{"start":{"line":928,"column":12},"end":{"line":968,"column":13}},{"start":{"line":958,"column":19},"end":{"line":968,"column":13}}]},"116":{"loc":{"start":{"line":929,"column":16},"end":{"line":933,"column":17}},"type":"if","locations":[{"start":{"line":929,"column":16},"end":{"line":933,"column":17}},{"start":{},"end":{}}]},"117":{"loc":{"start":{"line":937,"column":16},"end":{"line":943,"column":17}},"type":"if","locations":[{"start":{"line":937,"column":16},"end":{"line":943,"column":17}},{"start":{"line":939,"column":23},"end":{"line":943,"column":17}}]},"118":{"loc":{"start":{"line":953,"column":20},"end":{"line":955,"column":21}},"type":"if","locations":[{"start":{"line":953,"column":20},"end":{"line":955,"column":21}},{"start":{},"end":{}}]},"119":{"loc":{"start":{"line":964,"column":16},"end":{"line":967,"column":17}},"type":"if","locations":[{"start":{"line":964,"column":16},"end":{"line":967,"column":17}},{"start":{},"end":{}}]},"120":{"loc":{"start":{"line":982,"column":8},"end":{"line":984,"column":9}},"type":"if","locations":[{"start":{"line":982,"column":8},"end":{"line":984,"column":9}},{"start":{},"end":{}}]},"121":{"loc":{"start":{"line":985,"column":8},"end":{"line":987,"column":9}},"type":"if","locations":[{"start":{"line":985,"column":8},"end":{"line":987,"column":9}},{"start":{},"end":{}}]},"122":{"loc":{"start":{"line":988,"column":8},"end":{"line":990,"column":9}},"type":"if","locations":[{"start":{"line":988,"column":8},"end":{"line":990,"column":9}},{"start":{},"end":{}}]},"123":{"loc":{"start":{"line":991,"column":8},"end":{"line":993,"column":9}},"type":"if","locations":[{"start":{"line":991,"column":8},"end":{"line":993,"column":9}},{"start":{},"end":{}}]},"124":{"loc":{"start":{"line":997,"column":8},"end":{"line":999,"column":9}},"type":"if","locations":[{"start":{"line":997,"column":8},"end":{"line":999,"column":9}},{"start":{},"end":{}}]},"125":{"loc":{"start":{"line":1000,"column":8},"end":{"line":1002,"column":9}},"type":"if","locations":[{"start":{"line":1000,"column":8},"end":{"line":1002,"column":9}},{"start":{},"end":{}}]},"126":{"loc":{"start":{"line":1010,"column":16},"end":{"line":1012,"column":17}},"type":"if","locations":[{"start":{"line":1010,"column":16},"end":{"line":1012,"column":17}},{"start":{},"end":{}}]},"127":{"loc":{"start":{"line":1014,"column":20},"end":{"line":1016,"column":21}},"type":"if","locations":[{"start":{"line":1014,"column":20},"end":{"line":1016,"column":21}},{"start":{},"end":{}}]},"128":{"loc":{"start":{"line":1025,"column":24},"end":{"line":1027,"column":25}},"type":"if","locations":[{"start":{"line":1025,"column":24},"end":{"line":1027,"column":25}},{"start":{},"end":{}}]},"129":{"loc":{"start":{"line":1028,"column":24},"end":{"line":1030,"column":25}},"type":"if","locations":[{"start":{"line":1028,"column":24},"end":{"line":1030,"column":25}},{"start":{},"end":{}}]},"130":{"loc":{"start":{"line":1031,"column":24},"end":{"line":1033,"column":25}},"type":"if","locations":[{"start":{"line":1031,"column":24},"end":{"line":1033,"column":25}},{"start":{},"end":{}}]},"131":{"loc":{"start":{"line":1043,"column":28},"end":{"line":1046,"column":29}},"type":"if","locations":[{"start":{"line":1043,"column":28},"end":{"line":1046,"column":29}},{"start":{},"end":{}}]},"132":{"loc":{"start":{"line":1043,"column":32},"end":{"line":1043,"column":64}},"type":"binary-expr","locations":[{"start":{"line":1043,"column":32},"end":{"line":1043,"column":40}},{"start":{"line":1043,"column":44},"end":{"line":1043,"column":64}}]},"133":{"loc":{"start":{"line":1055,"column":28},"end":{"line":1063,"column":35}},"type":"cond-expr","locations":[{"start":{"line":1056,"column":34},"end":{"line":1056,"column":35}},{"start":{"line":1057,"column":34},"end":{"line":1063,"column":35}}]},"134":{"loc":{"start":{"line":1057,"column":34},"end":{"line":1063,"column":35}},"type":"cond-expr","locations":[{"start":{"line":1058,"column":34},"end":{"line":1058,"column":36}},{"start":{"line":1059,"column":34},"end":{"line":1063,"column":35}}]},"135":{"loc":{"start":{"line":1059,"column":34},"end":{"line":1063,"column":35}},"type":"cond-expr","locations":[{"start":{"line":1060,"column":34},"end":{"line":1060,"column":35}},{"start":{"line":1061,"column":34},"end":{"line":1063,"column":35}}]},"136":{"loc":{"start":{"line":1061,"column":34},"end":{"line":1063,"column":35}},"type":"cond-expr","locations":[{"start":{"line":1062,"column":34},"end":{"line":1062,"column":36}},{"start":{"line":1063,"column":34},"end":{"line":1063,"column":35}}]},"137":{"loc":{"start":{"line":1078,"column":15},"end":{"line":1078,"column":73}},"type":"cond-expr","locations":[{"start":{"line":1078,"column":28},"end":{"line":1078,"column":66}},{"start":{"line":1078,"column":69},"end":{"line":1078,"column":73}}]},"138":{"loc":{"start":{"line":1087,"column":8},"end":{"line":1089,"column":9}},"type":"if","locations":[{"start":{"line":1087,"column":8},"end":{"line":1089,"column":9}},{"start":{},"end":{}}]},"139":{"loc":{"start":{"line":1091,"column":8},"end":{"line":1096,"column":9}},"type":"if","locations":[{"start":{"line":1091,"column":8},"end":{"line":1096,"column":9}},{"start":{},"end":{}}]},"140":{"loc":{"start":{"line":1092,"column":12},"end":{"line":1094,"column":13}},"type":"if","locations":[{"start":{"line":1092,"column":12},"end":{"line":1094,"column":13}},{"start":{},"end":{}}]},"141":{"loc":{"start":{"line":1098,"column":8},"end":{"line":1100,"column":9}},"type":"if","locations":[{"start":{"line":1098,"column":8},"end":{"line":1100,"column":9}},{"start":{},"end":{}}]},"142":{"loc":{"start":{"line":1104,"column":16},"end":{"line":1104,"column":62}},"type":"cond-expr","locations":[{"start":{"line":1104,"column":31},"end":{"line":1104,"column":43}},{"start":{"line":1104,"column":46},"end":{"line":1104,"column":62}}]},"143":{"loc":{"start":{"line":1113,"column":8},"end":{"line":1136,"column":9}},"type":"if","locations":[{"start":{"line":1113,"column":8},"end":{"line":1136,"column":9}},{"start":{},"end":{}}]},"144":{"loc":{"start":{"line":1120,"column":24},"end":{"line":1128,"column":25}},"type":"if","locations":[{"start":{"line":1120,"column":24},"end":{"line":1128,"column":25}},{"start":{},"end":{}}]},"145":{"loc":{"start":{"line":1123,"column":32},"end":{"line":1126,"column":33}},"type":"if","locations":[{"start":{"line":1123,"column":32},"end":{"line":1126,"column":33}},{"start":{},"end":{}}]},"146":{"loc":{"start":{"line":1124,"column":52},"end":{"line":1124,"column":77}},"type":"binary-expr","locations":[{"start":{"line":1124,"column":52},"end":{"line":1124,"column":68}},{"start":{"line":1124,"column":72},"end":{"line":1124,"column":77}}]},"147":{"loc":{"start":{"line":1140,"column":8},"end":{"line":1150,"column":9}},"type":"if","locations":[{"start":{"line":1140,"column":8},"end":{"line":1150,"column":9}},{"start":{},"end":{}}]},"148":{"loc":{"start":{"line":1141,"column":12},"end":{"line":1143,"column":13}},"type":"if","locations":[{"start":{"line":1141,"column":12},"end":{"line":1143,"column":13}},{"start":{},"end":{}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":0,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":0,"375":0,"376":0,"377":0,"378":0,"379":0,"380":0,"381":0,"382":0,"383":0,"384":0,"385":0,"386":0,"387":0,"388":0,"389":0,"390":0,"391":0,"392":0,"393":0,"394":0,"395":0,"396":0,"397":0,"398":0,"399":0,"400":0,"401":0,"402":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"411":0,"412":0,"413":0,"414":0,"415":0,"416":0,"417":0,"418":0,"419":0,"420":0,"421":0,"422":0,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"430":0,"431":0,"432":0,"433":0,"434":0,"435":0,"436":0,"437":0,"438":0,"439":0,"440":0,"441":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"471":0,"472":0,"473":0,"474":0,"475":0,"476":0,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0,"483":0,"484":0,"485":0,"486":0,"487":0,"488":0,"489":0,"490":0,"491":0,"492":0,"493":0,"494":0,"495":0,"496":0,"497":0,"498":0,"499":0,"500":0,"501":0,"502":0,"503":0,"504":0,"505":0,"506":0,"507":0,"508":0,"509":0,"510":0,"511":0,"512":0,"513":0,"514":0,"515":0,"516":0,"517":0,"518":0,"519":0,"520":0,"521":0,"522":0,"523":0,"524":0,"525":0,"526":0,"527":0,"528":0,"529":0,"530":0,"531":0,"532":0,"533":0,"534":0,"535":0,"536":0,"537":0,"538":0,"539":0,"540":0,"541":0,"542":0,"543":0,"544":0,"545":0,"546":0,"547":0,"548":0,"549":0,"550":0,"551":0,"552":0,"553":0,"554":0,"555":0,"556":0,"557":0,"558":0,"559":0,"560":0,"561":0,"562":0,"563":0,"564":0,"565":0,"566":0,"567":0,"568":0,"569":0,"570":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0,0,0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0,0],"63":[0,0],"64":[0,0],"65":[0,0],"66":[0,0],"67":[0,0],"68":[0,0],"69":[0,0],"70":[0,0],"71":[0,0,0,0],"72":[0,0],"73":[0,0],"74":[0,0],"75":[0,0],"76":[0,0],"77":[0,0],"78":[0,0],"79":[0,0,0,0],"80":[0,0],"81":[0,0],"82":[0,0],"83":[0,0],"84":[0,0],"85":[0,0],"86":[0,0],"87":[0,0],"88":[0,0],"89":[0,0],"90":[0,0],"91":[0,0],"92":[0,0],"93":[0,0],"94":[0,0],"95":[0,0],"96":[0,0],"97":[0,0],"98":[0,0],"99":[0,0],"100":[0,0],"101":[0,0],"102":[0,0],"103":[0,0],"104":[0,0],"105":[0,0],"106":[0,0],"107":[0,0],"108":[0,0],"109":[0,0],"110":[0,0],"111":[0,0],"112":[0,0],"113":[0,0],"114":[0,0],"115":[0,0],"116":[0,0],"117":[0,0],"118":[0,0],"119":[0,0],"120":[0,0],"121":[0,0],"122":[0,0],"123":[0,0],"124":[0,0],"125":[0,0],"126":[0,0],"127":[0,0],"128":[0,0],"129":[0,0],"130":[0,0],"131":[0,0],"132":[0,0],"133":[0,0],"134":[0,0],"135":[0,0],"136":[0,0],"137":[0,0],"138":[0,0],"139":[0,0],"140":[0,0],"141":[0,0],"142":[0,0],"143":[0,0],"144":[0,0],"145":[0,0],"146":[0,0],"147":[0,0],"148":[0,0]}} +,"/home/jailuser/git/src/frontend/registers.ts": {"path":"/home/jailuser/git/src/frontend/registers.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":41}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":64}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"5":{"start":{"line":7,"column":4},"end":{"line":7,"column":null}},"6":{"start":{"line":17,"column":8},"end":{"line":17,"column":39}},"7":{"start":{"line":12,"column":15},"end":{"line":12,"column":28}},"8":{"start":{"line":13,"column":15},"end":{"line":13,"column":64}},"9":{"start":{"line":14,"column":15},"end":{"line":14,"column":35}},"10":{"start":{"line":15,"column":15},"end":{"line":15,"column":29}},"11":{"start":{"line":18,"column":8},"end":{"line":22,"column":10}},"12":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"13":{"start":{"line":30,"column":23},"end":{"line":30,"column":45}},"14":{"start":{"line":27,"column":11},"end":{"line":27,"column":52}},"15":{"start":{"line":28,"column":11},"end":{"line":28,"column":37}},"16":{"start":{"line":33,"column":8},"end":{"line":33,"column":18}},"17":{"start":{"line":37,"column":8},"end":{"line":37,"column":20}},"18":{"start":{"line":41,"column":8},"end":{"line":41,"column":20}},"19":{"start":{"line":45,"column":8},"end":{"line":45,"column":29}},"20":{"start":{"line":26,"column":0},"end":{"line":26,"column":13}},"21":{"start":{"line":56,"column":8},"end":{"line":56,"column":35}},"22":{"start":{"line":57,"column":8},"end":{"line":57,"column":25}},"23":{"start":{"line":58,"column":8},"end":{"line":58,"column":27}},"24":{"start":{"line":60,"column":8},"end":{"line":79,"column":9}},"25":{"start":{"line":61,"column":12},"end":{"line":72,"column":14}},"26":{"start":{"line":73,"column":15},"end":{"line":79,"column":9}},"27":{"start":{"line":74,"column":12},"end":{"line":78,"column":14}},"28":{"start":{"line":81,"column":8},"end":{"line":81,"column":30}},"29":{"start":{"line":85,"column":8},"end":{"line":85,"column":61}},"30":{"start":{"line":89,"column":20},"end":{"line":89,"column":37}},"31":{"start":{"line":90,"column":8},"end":{"line":100,"column":9}},"32":{"start":{"line":92,"column":16},"end":{"line":92,"column":54}},"33":{"start":{"line":93,"column":16},"end":{"line":93,"column":22}},"34":{"start":{"line":95,"column":16},"end":{"line":95,"column":74}},"35":{"start":{"line":96,"column":16},"end":{"line":96,"column":22}},"36":{"start":{"line":98,"column":16},"end":{"line":98,"column":57}},"37":{"start":{"line":99,"column":16},"end":{"line":99,"column":22}},"38":{"start":{"line":102,"column":8},"end":{"line":109,"column":9}},"39":{"start":{"line":103,"column":12},"end":{"line":108,"column":14}},"40":{"start":{"line":110,"column":8},"end":{"line":110,"column":91}},"41":{"start":{"line":114,"column":8},"end":{"line":114,"column":27}},"42":{"start":{"line":118,"column":8},"end":{"line":118,"column":34}},"43":{"start":{"line":122,"column":8},"end":{"line":129,"column":9}},"44":{"start":{"line":124,"column":16},"end":{"line":124,"column":52}},"45":{"start":{"line":126,"column":16},"end":{"line":126,"column":59}},"46":{"start":{"line":128,"column":16},"end":{"line":128,"column":55}},"47":{"start":{"line":133,"column":8},"end":{"line":133,"column":27}},"48":{"start":{"line":137,"column":32},"end":{"line":137,"column":34}},"49":{"start":{"line":138,"column":8},"end":{"line":144,"column":9}},"50":{"start":{"line":139,"column":12},"end":{"line":143,"column":15}},"51":{"start":{"line":145,"column":8},"end":{"line":149,"column":9}},"52":{"start":{"line":146,"column":12},"end":{"line":148,"column":14}},"53":{"start":{"line":147,"column":46},"end":{"line":147,"column":66}},"54":{"start":{"line":147,"column":82},"end":{"line":147,"column":92}},"55":{"start":{"line":150,"column":8},"end":{"line":150,"column":24}},"56":{"start":{"line":49,"column":0},"end":{"line":49,"column":13}},"57":{"start":{"line":161,"column":8},"end":{"line":161,"column":32}},"58":{"start":{"line":156,"column":15},"end":{"line":156,"column":27}},"59":{"start":{"line":157,"column":15},"end":{"line":157,"column":29}},"60":{"start":{"line":158,"column":15},"end":{"line":158,"column":27}},"61":{"start":{"line":159,"column":15},"end":{"line":159,"column":37}},"62":{"start":{"line":165,"column":22},"end":{"line":165,"column":71}},"63":{"start":{"line":166,"column":20},"end":{"line":166,"column":37}},"64":{"start":{"line":168,"column":8},"end":{"line":184,"column":9}},"65":{"start":{"line":170,"column":16},"end":{"line":170,"column":42}},"66":{"start":{"line":171,"column":16},"end":{"line":171,"column":22}},"67":{"start":{"line":173,"column":16},"end":{"line":173,"column":69}},"68":{"start":{"line":174,"column":16},"end":{"line":174,"column":22}},"69":{"start":{"line":176,"column":16},"end":{"line":176,"column":74}},"70":{"start":{"line":177,"column":16},"end":{"line":177,"column":22}},"71":{"start":{"line":179,"column":16},"end":{"line":182,"column":70}},"72":{"start":{"line":183,"column":16},"end":{"line":183,"column":22}},"73":{"start":{"line":186,"column":8},"end":{"line":186,"column":88}},"74":{"start":{"line":190,"column":22},"end":{"line":190,"column":71}},"75":{"start":{"line":191,"column":8},"end":{"line":202,"column":9}},"76":{"start":{"line":193,"column":16},"end":{"line":193,"column":40}},"77":{"start":{"line":195,"column":16},"end":{"line":195,"column":54}},"78":{"start":{"line":197,"column":16},"end":{"line":197,"column":72}},"79":{"start":{"line":199,"column":16},"end":{"line":201,"column":53}},"80":{"start":{"line":206,"column":8},"end":{"line":206,"column":91}},"81":{"start":{"line":210,"column":8},"end":{"line":212,"column":9}},"82":{"start":{"line":211,"column":12},"end":{"line":211,"column":87}},"83":{"start":{"line":213,"column":8},"end":{"line":213,"column":20}},"84":{"start":{"line":154,"column":0},"end":{"line":154,"column":13}},"85":{"start":{"line":218,"column":12},"end":{"line":218,"column":67}},"86":{"start":{"line":219,"column":11},"end":{"line":219,"column":65}},"87":{"start":{"line":220,"column":12},"end":{"line":220,"column":36}},"88":{"start":{"line":221,"column":12},"end":{"line":221,"column":42}},"89":{"start":{"line":222,"column":12},"end":{"line":222,"column":43}},"90":{"start":{"line":223,"column":12},"end":{"line":223,"column":64}},"91":{"start":{"line":227,"column":8},"end":{"line":227,"column":41}},"92":{"start":{"line":231,"column":32},"end":{"line":231,"column":34}},"93":{"start":{"line":232,"column":8},"end":{"line":234,"column":11}},"94":{"start":{"line":233,"column":12},"end":{"line":233,"column":49}},"95":{"start":{"line":235,"column":8},"end":{"line":235,"column":24}},"96":{"start":{"line":239,"column":8},"end":{"line":241,"column":9}},"97":{"start":{"line":240,"column":12},"end":{"line":240,"column":19}},"98":{"start":{"line":243,"column":8},"end":{"line":251,"column":9}},"99":{"start":{"line":244,"column":12},"end":{"line":244,"column":40}},"100":{"start":{"line":246,"column":12},"end":{"line":250,"column":15}},"101":{"start":{"line":247,"column":16},"end":{"line":247,"column":35}},"102":{"start":{"line":248,"column":16},"end":{"line":248,"column":44}},"103":{"start":{"line":249,"column":16},"end":{"line":249,"column":44}},"104":{"start":{"line":255,"column":8},"end":{"line":265,"column":11}},"105":{"start":{"line":256,"column":12},"end":{"line":263,"column":15}},"106":{"start":{"line":257,"column":30},"end":{"line":257,"column":54}},"107":{"start":{"line":258,"column":30},"end":{"line":258,"column":53}},"108":{"start":{"line":259,"column":37},"end":{"line":259,"column":60}},"109":{"start":{"line":260,"column":16},"end":{"line":262,"column":17}},"110":{"start":{"line":261,"column":20},"end":{"line":261,"column":49}},"111":{"start":{"line":264,"column":12},"end":{"line":264,"column":27}},"112":{"start":{"line":269,"column":8},"end":{"line":269,"column":23}},"113":{"start":{"line":273,"column":8},"end":{"line":273,"column":30}},"114":{"start":{"line":274,"column":8},"end":{"line":274,"column":28}},"115":{"start":{"line":276,"column":8},"end":{"line":282,"column":11}},"116":{"start":{"line":277,"column":12},"end":{"line":281,"column":13}},"117":{"start":{"line":278,"column":28},"end":{"line":278,"column":57}},"118":{"start":{"line":279,"column":16},"end":{"line":279,"column":41}},"119":{"start":{"line":280,"column":16},"end":{"line":280,"column":46}},"120":{"start":{"line":284,"column":8},"end":{"line":307,"column":9}},"121":{"start":{"line":285,"column":12},"end":{"line":306,"column":15}},"122":{"start":{"line":286,"column":16},"end":{"line":305,"column":17}},"123":{"start":{"line":287,"column":32},"end":{"line":287,"column":83}},"124":{"start":{"line":287,"column":59},"end":{"line":287,"column":82}},"125":{"start":{"line":288,"column":20},"end":{"line":295,"column":21}},"126":{"start":{"line":289,"column":24},"end":{"line":291,"column":25}},"127":{"start":{"line":290,"column":28},"end":{"line":290,"column":60}},"128":{"start":{"line":292,"column":24},"end":{"line":294,"column":25}},"129":{"start":{"line":293,"column":28},"end":{"line":293,"column":58}},"130":{"start":{"line":297,"column":49},"end":{"line":297,"column":72}},"131":{"start":{"line":298,"column":32},"end":{"line":298,"column":78}},"132":{"start":{"line":298,"column":59},"end":{"line":298,"column":77}},"133":{"start":{"line":299,"column":20},"end":{"line":304,"column":21}},"134":{"start":{"line":300,"column":38},"end":{"line":300,"column":94}},"135":{"start":{"line":300,"column":73},"end":{"line":300,"column":93}},"136":{"start":{"line":301,"column":24},"end":{"line":303,"column":25}},"137":{"start":{"line":302,"column":28},"end":{"line":302,"column":60}},"138":{"start":{"line":309,"column":8},"end":{"line":309,"column":23}},"139":{"start":{"line":313,"column":8},"end":{"line":315,"column":11}},"140":{"start":{"line":314,"column":12},"end":{"line":314,"column":61}},"141":{"start":{"line":316,"column":8},"end":{"line":316,"column":23}},"142":{"start":{"line":320,"column":8},"end":{"line":320,"column":33}},"143":{"start":{"line":321,"column":8},"end":{"line":323,"column":9}},"144":{"start":{"line":322,"column":12},"end":{"line":322,"column":22}},"145":{"start":{"line":325,"column":8},"end":{"line":330,"column":9}},"146":{"start":{"line":326,"column":12},"end":{"line":328,"column":13}},"147":{"start":{"line":327,"column":16},"end":{"line":327,"column":86}},"148":{"start":{"line":327,"column":65},"end":{"line":327,"column":84}},"149":{"start":{"line":329,"column":12},"end":{"line":329,"column":66}},"150":{"start":{"line":329,"column":47},"end":{"line":329,"column":64}},"151":{"start":{"line":332,"column":8},"end":{"line":334,"column":9}},"152":{"start":{"line":333,"column":12},"end":{"line":333,"column":61}},"153":{"start":{"line":333,"column":29},"end":{"line":333,"column":53}},"154":{"start":{"line":336,"column":8},"end":{"line":336,"column":99}},"155":{"start":{"line":340,"column":8},"end":{"line":340,"column":28}},"156":{"start":{"line":341,"column":8},"end":{"line":341,"column":28}},"157":{"start":{"line":342,"column":8},"end":{"line":342,"column":30}},"158":{"start":{"line":343,"column":8},"end":{"line":343,"column":23}},"159":{"start":{"line":347,"column":8},"end":{"line":347,"column":28}},"160":{"start":{"line":348,"column":8},"end":{"line":348,"column":28}},"161":{"start":{"line":349,"column":8},"end":{"line":349,"column":30}},"162":{"start":{"line":350,"column":8},"end":{"line":350,"column":42}},"163":{"start":{"line":354,"column":8},"end":{"line":356,"column":9}},"164":{"start":{"line":355,"column":12},"end":{"line":355,"column":37}},"165":{"start":{"line":217,"column":0},"end":{"line":217,"column":13}}},"fnMap":{"0":{"name":"(anonymous_9)","decl":{"start":{"line":5,"column":0},"end":{"line":5,"column":12}},"loc":{"start":{"line":5,"column":22},"end":{"line":8,"column":1}}},"1":{"name":"(anonymous_10)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"loc":{"start":{"line":15,"column":29},"end":{"line":23,"column":5}}},"2":{"name":"(anonymous_11)","decl":{"start":{"line":30,"column":4},"end":{"line":30,"column":23}},"loc":{"start":{"line":30,"column":45},"end":{"line":30,"column":49}}},"3":{"name":"(anonymous_12)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":15}},"loc":{"start":{"line":32,"column":15},"end":{"line":34,"column":5}}},"4":{"name":"(anonymous_13)","decl":{"start":{"line":36,"column":4},"end":{"line":36,"column":15}},"loc":{"start":{"line":36,"column":15},"end":{"line":38,"column":5}}},"5":{"name":"(anonymous_14)","decl":{"start":{"line":40,"column":4},"end":{"line":40,"column":16}},"loc":{"start":{"line":40,"column":16},"end":{"line":42,"column":5}}},"6":{"name":"(anonymous_15)","decl":{"start":{"line":44,"column":4},"end":{"line":44,"column":13}},"loc":{"start":{"line":44,"column":34},"end":{"line":46,"column":5}}},"7":{"name":"(anonymous_16)","decl":{"start":{"line":55,"column":4},"end":{"line":55,"column":16}},"loc":{"start":{"line":55,"column":43},"end":{"line":82,"column":5}}},"8":{"name":"(anonymous_17)","decl":{"start":{"line":84,"column":4},"end":{"line":84,"column":15}},"loc":{"start":{"line":84,"column":45},"end":{"line":86,"column":5}}},"9":{"name":"(anonymous_18)","decl":{"start":{"line":88,"column":4},"end":{"line":88,"column":15}},"loc":{"start":{"line":88,"column":15},"end":{"line":111,"column":5}}},"10":{"name":"(anonymous_19)","decl":{"start":{"line":113,"column":4},"end":{"line":113,"column":15}},"loc":{"start":{"line":113,"column":15},"end":{"line":115,"column":5}}},"11":{"name":"(anonymous_20)","decl":{"start":{"line":117,"column":4},"end":{"line":117,"column":12}},"loc":{"start":{"line":117,"column":26},"end":{"line":119,"column":5}}},"12":{"name":"(anonymous_21)","decl":{"start":{"line":121,"column":4},"end":{"line":121,"column":16}},"loc":{"start":{"line":121,"column":16},"end":{"line":130,"column":5}}},"13":{"name":"(anonymous_22)","decl":{"start":{"line":132,"column":4},"end":{"line":132,"column":13}},"loc":{"start":{"line":132,"column":13},"end":{"line":134,"column":5}}},"14":{"name":"(anonymous_23)","decl":{"start":{"line":136,"column":4},"end":{"line":136,"column":16}},"loc":{"start":{"line":136,"column":16},"end":{"line":151,"column":5}}},"15":{"name":"(anonymous_24)","decl":{"start":{"line":147,"column":35},"end":{"line":147,"column":36}},"loc":{"start":{"line":147,"column":46},"end":{"line":147,"column":66}}},"16":{"name":"(anonymous_25)","decl":{"start":{"line":147,"column":75},"end":{"line":147,"column":76}},"loc":{"start":{"line":147,"column":82},"end":{"line":147,"column":92}}},"17":{"name":"(anonymous_26)","decl":{"start":{"line":155,"column":4},"end":{"line":155,"column":null}},"loc":{"start":{"line":159,"column":37},"end":{"line":162,"column":5}}},"18":{"name":"(anonymous_27)","decl":{"start":{"line":164,"column":4},"end":{"line":164,"column":15}},"loc":{"start":{"line":164,"column":15},"end":{"line":187,"column":5}}},"19":{"name":"(anonymous_28)","decl":{"start":{"line":189,"column":4},"end":{"line":189,"column":16}},"loc":{"start":{"line":189,"column":16},"end":{"line":203,"column":5}}},"20":{"name":"(anonymous_29)","decl":{"start":{"line":205,"column":4},"end":{"line":205,"column":13}},"loc":{"start":{"line":205,"column":13},"end":{"line":207,"column":5}}},"21":{"name":"(anonymous_30)","decl":{"start":{"line":209,"column":4},"end":{"line":209,"column":16}},"loc":{"start":{"line":209,"column":16},"end":{"line":214,"column":5}}},"22":{"name":"(anonymous_31)","decl":{"start":{"line":217,"column":0},"end":{"line":217,"column":13}},"loc":{"start":{"line":217,"column":0},"end":{"line":360,"column":1}}},"23":{"name":"(anonymous_32)","decl":{"start":{"line":226,"column":4},"end":{"line":226,"column":11}},"loc":{"start":{"line":226,"column":11},"end":{"line":228,"column":5}}},"24":{"name":"(anonymous_33)","decl":{"start":{"line":230,"column":4},"end":{"line":230,"column":16}},"loc":{"start":{"line":230,"column":16},"end":{"line":236,"column":5}}},"25":{"name":"(anonymous_34)","decl":{"start":{"line":232,"column":31},"end":{"line":232,"column":32}},"loc":{"start":{"line":232,"column":39},"end":{"line":234,"column":9}}},"26":{"name":"(anonymous_35)","decl":{"start":{"line":238,"column":4},"end":{"line":238,"column":21}},"loc":{"start":{"line":238,"column":21},"end":{"line":252,"column":5}}},"27":{"name":"(anonymous_36)","decl":{"start":{"line":246,"column":85},"end":{"line":246,"column":86}},"loc":{"start":{"line":246,"column":100},"end":{"line":250,"column":13}}},"28":{"name":"(anonymous_37)","decl":{"start":{"line":254,"column":12},"end":{"line":254,"column":32}},"loc":{"start":{"line":254,"column":32},"end":{"line":266,"column":5}}},"29":{"name":"(anonymous_38)","decl":{"start":{"line":255,"column":77},"end":{"line":255,"column":78}},"loc":{"start":{"line":255,"column":96},"end":{"line":265,"column":9}}},"30":{"name":"(anonymous_39)","decl":{"start":{"line":256,"column":30},"end":{"line":256,"column":31}},"loc":{"start":{"line":256,"column":43},"end":{"line":263,"column":13}}},"31":{"name":"(anonymous_40)","decl":{"start":{"line":268,"column":4},"end":{"line":268,"column":15}},"loc":{"start":{"line":268,"column":33},"end":{"line":270,"column":5}}},"32":{"name":"(anonymous_41)","decl":{"start":{"line":272,"column":12},"end":{"line":272,"column":27}},"loc":{"start":{"line":272,"column":43},"end":{"line":310,"column":5}}},"33":{"name":"(anonymous_42)","decl":{"start":{"line":276,"column":22},"end":{"line":276,"column":23}},"loc":{"start":{"line":276,"column":38},"end":{"line":282,"column":9}}},"34":{"name":"(anonymous_43)","decl":{"start":{"line":285,"column":41},"end":{"line":285,"column":42}},"loc":{"start":{"line":285,"column":53},"end":{"line":306,"column":13}}},"35":{"name":"(anonymous_44)","decl":{"start":{"line":287,"column":52},"end":{"line":287,"column":53}},"loc":{"start":{"line":287,"column":59},"end":{"line":287,"column":82}}},"36":{"name":"(anonymous_45)","decl":{"start":{"line":298,"column":52},"end":{"line":298,"column":53}},"loc":{"start":{"line":298,"column":59},"end":{"line":298,"column":77}}},"37":{"name":"(anonymous_46)","decl":{"start":{"line":300,"column":61},"end":{"line":300,"column":62}},"loc":{"start":{"line":300,"column":73},"end":{"line":300,"column":93}}},"38":{"name":"(anonymous_47)","decl":{"start":{"line":312,"column":4},"end":{"line":312,"column":24}},"loc":{"start":{"line":312,"column":38},"end":{"line":317,"column":5}}},"39":{"name":"(anonymous_48)","decl":{"start":{"line":313,"column":23},"end":{"line":313,"column":24}},"loc":{"start":{"line":313,"column":31},"end":{"line":315,"column":9}}},"40":{"name":"(anonymous_49)","decl":{"start":{"line":319,"column":4},"end":{"line":319,"column":15}},"loc":{"start":{"line":319,"column":34},"end":{"line":337,"column":5}}},"41":{"name":"(anonymous_50)","decl":{"start":{"line":327,"column":54},"end":{"line":327,"column":55}},"loc":{"start":{"line":327,"column":65},"end":{"line":327,"column":84}}},"42":{"name":"(anonymous_51)","decl":{"start":{"line":329,"column":38},"end":{"line":329,"column":39}},"loc":{"start":{"line":329,"column":47},"end":{"line":329,"column":64}}},"43":{"name":"(anonymous_52)","decl":{"start":{"line":333,"column":23},"end":{"line":333,"column":26}},"loc":{"start":{"line":333,"column":29},"end":{"line":333,"column":53}}},"44":{"name":"(anonymous_53)","decl":{"start":{"line":339,"column":4},"end":{"line":339,"column":26}},"loc":{"start":{"line":339,"column":26},"end":{"line":344,"column":5}}},"45":{"name":"(anonymous_54)","decl":{"start":{"line":346,"column":4},"end":{"line":346,"column":23}},"loc":{"start":{"line":346,"column":41},"end":{"line":351,"column":5}}},"46":{"name":"(anonymous_55)","decl":{"start":{"line":353,"column":4},"end":{"line":353,"column":16}},"loc":{"start":{"line":353,"column":16},"end":{"line":357,"column":5}}},"47":{"name":"(anonymous_56)","decl":{"start":{"line":359,"column":4},"end":{"line":359,"column":18}},"loc":{"start":{"line":359,"column":18},"end":{"line":359,"column":29}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":12},"end":{"line":5,"column":null}},"type":"binary-expr","locations":[{"start":{"line":5,"column":12},"end":{"line":5,"column":22}},{"start":{"line":5,"column":22},"end":{"line":5,"column":null}}]},"1":{"loc":{"start":{"line":60,"column":8},"end":{"line":79,"column":9}},"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":79,"column":9}},{"start":{"line":73,"column":15},"end":{"line":79,"column":9}}]},"2":{"loc":{"start":{"line":60,"column":12},"end":{"line":60,"column":74}},"type":"binary-expr","locations":[{"start":{"line":60,"column":12},"end":{"line":60,"column":41}},{"start":{"line":60,"column":45},"end":{"line":60,"column":74}}]},"3":{"loc":{"start":{"line":73,"column":15},"end":{"line":79,"column":9}},"type":"if","locations":[{"start":{"line":73,"column":15},"end":{"line":79,"column":9}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":90,"column":8},"end":{"line":100,"column":9}},"type":"switch","locations":[{"start":{"line":91,"column":12},"end":{"line":93,"column":22}},{"start":{"line":94,"column":12},"end":{"line":96,"column":22}},{"start":{"line":97,"column":12},"end":{"line":99,"column":22}}]},"5":{"loc":{"start":{"line":102,"column":8},"end":{"line":109,"column":9}},"type":"if","locations":[{"start":{"line":102,"column":8},"end":{"line":109,"column":9}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":102,"column":12},"end":{"line":102,"column":49}},"type":"binary-expr","locations":[{"start":{"line":102,"column":12},"end":{"line":102,"column":23}},{"start":{"line":102,"column":27},"end":{"line":102,"column":49}}]},"7":{"loc":{"start":{"line":105,"column":16},"end":{"line":105,"column":116}},"type":"cond-expr","locations":[{"start":{"line":105,"column":32},"end":{"line":105,"column":72}},{"start":{"line":105,"column":75},"end":{"line":105,"column":116}}]},"8":{"loc":{"start":{"line":122,"column":8},"end":{"line":129,"column":9}},"type":"switch","locations":[{"start":{"line":123,"column":12},"end":{"line":124,"column":52}},{"start":{"line":125,"column":12},"end":{"line":126,"column":59}},{"start":{"line":127,"column":12},"end":{"line":128,"column":55}}]},"9":{"loc":{"start":{"line":138,"column":8},"end":{"line":144,"column":9}},"type":"if","locations":[{"start":{"line":138,"column":8},"end":{"line":144,"column":9}},{"start":{},"end":{}}]},"10":{"loc":{"start":{"line":138,"column":12},"end":{"line":138,"column":62}},"type":"binary-expr","locations":[{"start":{"line":138,"column":12},"end":{"line":138,"column":25}},{"start":{"line":138,"column":29},"end":{"line":138,"column":62}}]},"11":{"loc":{"start":{"line":145,"column":8},"end":{"line":149,"column":9}},"type":"if","locations":[{"start":{"line":145,"column":8},"end":{"line":149,"column":9}},{"start":{},"end":{}}]},"12":{"loc":{"start":{"line":168,"column":8},"end":{"line":184,"column":9}},"type":"switch","locations":[{"start":{"line":169,"column":12},"end":{"line":171,"column":22}},{"start":{"line":172,"column":12},"end":{"line":174,"column":22}},{"start":{"line":175,"column":12},"end":{"line":177,"column":22}},{"start":{"line":178,"column":12},"end":{"line":183,"column":22}}]},"13":{"loc":{"start":{"line":180,"column":20},"end":{"line":182,"column":69}},"type":"cond-expr","locations":[{"start":{"line":181,"column":26},"end":{"line":181,"column":74}},{"start":{"line":182,"column":26},"end":{"line":182,"column":69}}]},"14":{"loc":{"start":{"line":191,"column":8},"end":{"line":202,"column":9}},"type":"switch","locations":[{"start":{"line":192,"column":12},"end":{"line":193,"column":40}},{"start":{"line":194,"column":12},"end":{"line":195,"column":54}},{"start":{"line":196,"column":12},"end":{"line":197,"column":72}},{"start":{"line":198,"column":12},"end":{"line":201,"column":53}}]},"15":{"loc":{"start":{"line":199,"column":23},"end":{"line":201,"column":52}},"type":"cond-expr","locations":[{"start":{"line":200,"column":22},"end":{"line":200,"column":70}},{"start":{"line":201,"column":22},"end":{"line":201,"column":52}}]},"16":{"loc":{"start":{"line":206,"column":15},"end":{"line":206,"column":90}},"type":"cond-expr","locations":[{"start":{"line":206,"column":51},"end":{"line":206,"column":76}},{"start":{"line":206,"column":79},"end":{"line":206,"column":90}}]},"17":{"loc":{"start":{"line":210,"column":8},"end":{"line":212,"column":9}},"type":"if","locations":[{"start":{"line":210,"column":8},"end":{"line":212,"column":9}},{"start":{},"end":{}}]},"18":{"loc":{"start":{"line":239,"column":8},"end":{"line":241,"column":9}},"type":"if","locations":[{"start":{"line":239,"column":8},"end":{"line":241,"column":9}},{"start":{},"end":{}}]},"19":{"loc":{"start":{"line":243,"column":8},"end":{"line":251,"column":9}},"type":"if","locations":[{"start":{"line":243,"column":8},"end":{"line":251,"column":9}},{"start":{"line":245,"column":15},"end":{"line":251,"column":9}}]},"20":{"loc":{"start":{"line":260,"column":16},"end":{"line":262,"column":17}},"type":"if","locations":[{"start":{"line":260,"column":16},"end":{"line":262,"column":17}},{"start":{},"end":{}}]},"21":{"loc":{"start":{"line":277,"column":12},"end":{"line":281,"column":13}},"type":"if","locations":[{"start":{"line":277,"column":12},"end":{"line":281,"column":13}},{"start":{},"end":{}}]},"22":{"loc":{"start":{"line":284,"column":8},"end":{"line":307,"column":9}},"type":"if","locations":[{"start":{"line":284,"column":8},"end":{"line":307,"column":9}},{"start":{},"end":{}}]},"23":{"loc":{"start":{"line":286,"column":16},"end":{"line":305,"column":17}},"type":"if","locations":[{"start":{"line":286,"column":16},"end":{"line":305,"column":17}},{"start":{"line":296,"column":23},"end":{"line":305,"column":17}}]},"24":{"loc":{"start":{"line":288,"column":20},"end":{"line":295,"column":21}},"type":"if","locations":[{"start":{"line":288,"column":20},"end":{"line":295,"column":21}},{"start":{},"end":{}}]},"25":{"loc":{"start":{"line":289,"column":24},"end":{"line":291,"column":25}},"type":"if","locations":[{"start":{"line":289,"column":24},"end":{"line":291,"column":25}},{"start":{},"end":{}}]},"26":{"loc":{"start":{"line":292,"column":24},"end":{"line":294,"column":25}},"type":"if","locations":[{"start":{"line":292,"column":24},"end":{"line":294,"column":25}},{"start":{},"end":{}}]},"27":{"loc":{"start":{"line":299,"column":20},"end":{"line":304,"column":21}},"type":"if","locations":[{"start":{"line":299,"column":20},"end":{"line":304,"column":21}},{"start":{},"end":{}}]},"28":{"loc":{"start":{"line":301,"column":24},"end":{"line":303,"column":25}},"type":"if","locations":[{"start":{"line":301,"column":24},"end":{"line":303,"column":25}},{"start":{},"end":{}}]},"29":{"loc":{"start":{"line":301,"column":28},"end":{"line":301,"column":51}},"type":"binary-expr","locations":[{"start":{"line":301,"column":28},"end":{"line":301,"column":33}},{"start":{"line":301,"column":37},"end":{"line":301,"column":51}}]},"30":{"loc":{"start":{"line":321,"column":8},"end":{"line":323,"column":9}},"type":"if","locations":[{"start":{"line":321,"column":8},"end":{"line":323,"column":9}},{"start":{},"end":{}}]},"31":{"loc":{"start":{"line":325,"column":8},"end":{"line":330,"column":9}},"type":"if","locations":[{"start":{"line":325,"column":8},"end":{"line":330,"column":9}},{"start":{},"end":{}}]},"32":{"loc":{"start":{"line":326,"column":12},"end":{"line":328,"column":13}},"type":"if","locations":[{"start":{"line":326,"column":12},"end":{"line":328,"column":13}},{"start":{},"end":{}}]},"33":{"loc":{"start":{"line":332,"column":8},"end":{"line":334,"column":9}},"type":"if","locations":[{"start":{"line":332,"column":8},"end":{"line":334,"column":9}},{"start":{},"end":{}}]},"34":{"loc":{"start":{"line":354,"column":8},"end":{"line":356,"column":9}},"type":"if","locations":[{"start":{"line":354,"column":8},"end":{"line":356,"column":9}},{"start":{},"end":{}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0,0,0],"13":[0,0],"14":[0,0,0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0]}} +} \ No newline at end of file diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 0000000..b4d6756 --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} \ No newline at end of file diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 0000000..832f51d --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selector that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); \ No newline at end of file diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png new file mode 100644 index 0000000..e69de29 diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html new file mode 100644 index 0000000..01a09e9 --- /dev/null +++ b/coverage/lcov-report/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 0% + Statements + 0/2443 +
+ + +
+ 0% + Branches + 0/1150 +
+ + +
+ 0% + Functions + 0/513 +
+ + +
+ 0% + Lines + 0/2386 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
src +
+
0%0/2110%0/940%0/580%0/208
src/backend +
+
0%0/10250%0/4660%0/1520%0/1013
src/backend/mi2 +
+
0%0/3100%0/1440%0/910%0/309
src/frontend +
+
0%0/8970%0/4460%0/2120%0/856
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 0000000..d44b3a2 --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 0000000..84567ec --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); \ No newline at end of file diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000..e69de29 diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js new file mode 100644 index 0000000..83256b5 --- /dev/null +++ b/coverage/lcov-report/sorter.js @@ -0,0 +1,210 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + + // Try to create a RegExp from the searchValue. If it fails (invalid regex), + // it will be treated as a plain text search + let searchRegex; + try { + searchRegex = new RegExp(searchValue, 'i'); // 'i' for case-insensitive + } catch (error) { + searchRegex = null; + } + + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + let isMatch = false; + + if (searchRegex) { + // If a valid regex was created, use it for matching + isMatch = searchRegex.test(row.textContent); + } else { + // Otherwise, fall back to the original plain text search + isMatch = row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()); + } + + row.style.display = isMatch ? '' : 'none'; + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); \ No newline at end of file diff --git a/coverage/lcov-report/src/backend/adapter.ts.html b/coverage/lcov-report/src/backend/adapter.ts.html new file mode 100644 index 0000000..aa99479 --- /dev/null +++ b/coverage/lcov-report/src/backend/adapter.ts.html @@ -0,0 +1,3886 @@ + + + + + + Code coverage report for src/backend/adapter.ts + + + + + + + + + +
+
+

All files / src/backend adapter.ts

+
+ +
+ 0% + Statements + 0/598 +
+ + +
+ 0% + Branches + 0/201 +
+ + +
+ 0% + Functions + 0/115 +
+ + +
+ 0% + Lines + 0/588 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1194 +1195 +1196 +1197 +1198 +1199 +1200 +1201 +1202 +1203 +1204 +1205 +1206 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as crypto from 'crypto';
+import * as fs from 'fs';
+import { setTimeout } from 'timers';
+import {
+    DebugSession,
+    Event,
+    Handles,
+    InitializedEvent,
+    OutputEvent,
+    TerminatedEvent,
+    ThreadEvent,
+    Thread,
+    StackFrame,
+    Scope,
+    Source,
+    ContinuedEvent,
+} from '@vscode/debugadapter';
+import { StoppedEvent, AdapterOutputEvent } from '../common';
+import { hexFormat, encodeDisassembly, parseQuery } from '../utils';
+import { VariableObject, MIError } from './mi2/types';
+import { expandValue } from './expand_value';
+import { MI2 } from './mi2/mi2';
+import { MINode } from './mi_parse';
+import { SymbolTable } from './symbols';
+ 
+class ExtendedVariable {
+    constructor(
+        public name: string,
+        public options: any
+    ) {}
+}
+ 
+const STATIC_HANDLES_START = 65536;    // 0x10000
+const STATIC_HANDLES_END = 131071;     // 0x1FFFF
+ 
+class CustomStopEvent extends Event {
+    constructor(reason: string, threadID: number) {
+        super('custom-stop', { reason, threadID });
+    }
+}
+ 
+class CustomContinuedEvent extends Event {
+    constructor(threadID: number, allThreads: boolean = true) {
+        super('custom-continued', { threadID, allThreads });
+    }
+}
+ 
+export class GDBDebugSession extends DebugSession {
+    private variableHandles = new Handles<string | VariableObject | ExtendedVariable>(131072);
+    private variableHandlesReverse: { [name: string]: number } = {};
+    private forceDisassembly: boolean = false;
+    private activeEditorPath: string | null = null;
+    private currentThreadId: number = 0;
+    private stopped: boolean = false;
+    private stoppedReason: string = '';
+    private breakpointMap: Map<string, any[]> = new Map();
+    private fileExistsCache: Map<string, boolean> = new Map();
+    private miDebugger: MI2;
+    private args: any;
+    private quit: boolean;
+    private attached: boolean;
+    private started: boolean;
+    private crashed: boolean;
+    private debugReady: boolean;
+    private symbolTable: SymbolTable;
+ 
+    constructor(debuggerLinesStartAt1?: boolean, isServer?: boolean) {
+        super(debuggerLinesStartAt1, isServer);
+    }
+ 
+    initDebugger(): void {
+        this.miDebugger.on('launcherror', this.launchError.bind(this));
+        this.miDebugger.on('quit', this.quitEvent.bind(this));
+        this.miDebugger.on('exited-normally', this.quitEvent.bind(this));
+        this.miDebugger.on('stopped', this.stopEvent.bind(this));
+        this.miDebugger.on('msg', this.handleMsg.bind(this));
+        this.miDebugger.on('breakpoint', this.handleBreakpoint.bind(this));
+        this.miDebugger.on('step-end', this.handleBreak.bind(this));
+        this.miDebugger.on('step-out-end', this.handleBreak.bind(this));
+        this.miDebugger.on('signal-stop', this.handlePause.bind(this));
+        this.miDebugger.on('running', this.handleRunning.bind(this));
+        this.miDebugger.on('thread-created', this.handleThreadCreated.bind(this));
+        this.miDebugger.on('thread-exited', this.handleThreadExited.bind(this));
+        this.miDebugger.on('thread-selected', this.handleThreadSelected.bind(this));
+        this.sendEvent(new InitializedEvent());
+    }
+ 
+    protected initializeRequest(response: any, args: any): void {
+        response.body.supportsConditionalBreakpoints = true;
+        response.body.supportsConfigurationDoneRequest = true;
+        response.body.supportsEvaluateForHovers = true;
+        response.body.supportsFunctionBreakpoints = true;
+        response.body.supportsHitConditionalBreakpoints = true;
+        response.body.supportsRestartRequest = true;
+        response.body.supportsSetVariable = true;
+        response.body.supportsTerminateRequest = true;
+        response.body.supportsValueFormattingOptions = true;
+        this.sendResponse(response);
+    }
+ 
+    protected launchRequest(response: any, args: any): void {
+        this.args = args;
+        this.processLaunchAttachRequest(response, false);
+    }
+ 
+    protected attachRequest(response: any, args: any): void {
+        this.args = args;
+        this.processLaunchAttachRequest(response, true);
+    }
+ 
+    private processLaunchAttachRequest(response: any, isAttach: boolean): void {
+        this.quit = false;
+        this.attached = false;
+        this.started = false;
+        this.crashed = false;
+        this.debugReady = false;
+        this.stopped = false;
+        this.breakpointMap = new Map();
+        this.fileExistsCache = new Map();
+ 
+        const pioArgs = ['debug'];
+        if (this.args.projectEnvName) {
+            pioArgs.push('-e', this.args.projectEnvName);
+        }
+        if (this.args.loadMode) {
+            pioArgs.push('--load-mode', this.args.loadMode);
+        }
+        pioArgs.push('--interface', 'gdb', '--interpreter=mi2', '-q');
+ 
+        this.miDebugger = new MI2('platformio', pioArgs);
+        this.initDebugger();
+        this.miDebugger.printCalls = !!this.args.showDevDebugOutput;
+        this.miDebugger.debugOutput = !!this.args.showDevDebugOutput;
+ 
+        this.miDebugger.once('debug-ready', () => {
+            this.debugReady = true;
+            this.stopped = true;
+            this.stoppedReason = 'start';
+            this.sendEvent(new StoppedEvent('start', this.currentThreadId, true));
+            this.sendEvent(new CustomStopEvent('start', this.currentThreadId));
+        });
+ 
+        this.miDebugger
+            .connect(this.args.cwd, [
+                'interpreter-exec console "source .pioinit"',
+                'enable-pretty-printing',
+            ])
+            .then(
+                () => {
+                    this.symbolTable = new SymbolTable(this.args.toolchainBinDir, this.args.executable);
+                    try {
+                        this.symbolTable.loadSymbols();
+                        this.started = true;
+                        this.sendResponse(response);
+                    } catch (err) {
+                        if (this.args.toolchainBinDir) {
+                            this.sendErrorResponse(
+                                response,
+                                102,
+                                `Failed to load symbols from executable file: ${err.toString()}`
+                            );
+                        }
+                    }
+                },
+                (err) => {
+                    this.sendErrorResponse(response, 103, `Failed to launch GDB: ${err.toString()}`);
+                }
+            );
+    }
+ 
+    protected customRequest(command: string, response: any, args: any): void {
+        switch (command) {
+            case 'set-force-disassembly':
+                response.body = { success: true };
+                this.forceDisassembly = args.force;
+                if (this.stopped) {
+                    this.activeEditorPath = null;
+                    this.sendEvent(new ContinuedEvent(this.currentThreadId, true));
+                    this.sendEvent(new StoppedEvent(this.stoppedReason, this.currentThreadId, true));
+                }
+                this.sendResponse(response);
+                break;
+ 
+            case 'load-function-symbols':
+                response.body = { functionSymbols: this.symbolTable.getFunctionSymbols() };
+                this.sendResponse(response);
+                break;
+ 
+            case 'set-active-editor':
+                this.activeEditorPath = args.path;
+                response.body = {};
+                this.sendResponse(response);
+                break;
+ 
+            case 'get-arguments':
+                response.body = this.args;
+                this.sendResponse(response);
+                break;
+ 
+            case 'read-memory':
+                this.customReadMemoryRequest(response, args.address, args.length);
+                break;
+ 
+            case 'write-memory':
+                this.customWriteMemoryRequest(response, args.address, args.data);
+                break;
+ 
+            case 'read-registers':
+                this.customReadRegistersRequest(response);
+                break;
+ 
+            case 'read-register-list':
+                this.customReadRegisterListRequest(response);
+                break;
+ 
+            case 'disassemble':
+                this.disassembleRequest(response, args);
+                break;
+ 
+            case 'execute-command':
+                let cmd: string = args.command;
+                cmd = cmd.startsWith('-') ? cmd.substring(1) : `interpreter-exec console "${cmd}"`;
+                this.miDebugger.sendCommand(cmd).then(
+                    (result) => {
+                        response.body = result.resultRecords;
+                        this.sendResponse(response);
+                    },
+                    (err) => {
+                        response.body = err;
+                        this.sendErrorResponse(response, 110, 'Unable to execute command');
+                    }
+                );
+                break;
+ 
+            default:
+                response.body = { error: 'Invalid command.' };
+                this.sendResponse(response);
+        }
+    }
+ 
+    protected async disassembleRequest(response: any, args: any): Promise<void> {
+        if (args.function) {
+            try {
+                const result = await this.getDisassemblyForFunction(args.function, args.file);
+                response.body = {
+                    instructions: result.instructions,
+                    name: result.name,
+                    file: result.file,
+                    address: result.address,
+                    length: result.length,
+                };
+                this.sendResponse(response);
+            } catch (err) {
+                this.sendErrorResponse(response, 1, `Unable to disassemble: ${err.toString()}`);
+            }
+        } else if (args.startAddress) {
+            try {
+                let func = this.symbolTable.getFunctionAtAddress(args.startAddress);
+                if (func) {
+                    func = await this.getDisassemblyForFunction(func.name, func.file);
+                    response.body = {
+                        instructions: func.instructions,
+                        name: func.name,
+                        file: func.file,
+                        address: func.address,
+                        length: func.length,
+                    };
+                    this.sendResponse(response);
+                } else {
+                    const instructions = await this.getDisassemblyForAddresses(
+                        args.startAddress,
+                        args.length || 256
+                    );
+                    response.body = { instructions };
+                    this.sendResponse(response);
+                }
+            } catch (err) {
+                this.sendErrorResponse(response, 1, `Unable to disassemble: ${err.toString()}`);
+            }
+        } else {
+            this.sendErrorResponse(response, 1, 'Unable to disassemble; invalid parameters.');
+        }
+    }
+ 
+    private async getDisassemblyForFunction(functionName: string, file: string): Promise<any> {
+        const func = this.symbolTable.getFunctionByName(functionName, file);
+        if (!func) {
+            throw new Error(`Unable to find function with name ${functionName}.`);
+        }
+        if (func.instructions) {
+            return func;
+        }
+ 
+        const startAddress = func.address;
+        const endAddress = func.address + func.length;
+        const result = await this.miDebugger.sendCommand(
+            `data-disassemble -s ${hexFormat(startAddress, 8)} -e ${hexFormat(endAddress, 8)} -- 2`
+        );
+ 
+        const instructions = result.result('asm_insns').map((entry: any) => ({
+            address: MINode.valueOf(entry, 'address'),
+            functionName: MINode.valueOf(entry, 'func-name'),
+            offset: parseInt(MINode.valueOf(entry, 'offset')),
+            instruction: MINode.valueOf(entry, 'inst'),
+            opcodes: MINode.valueOf(entry, 'opcodes'),
+        }));
+ 
+        func.instructions = instructions;
+        return func;
+    }
+ 
+    private async getDisassemblyForAddresses(startAddress: number, length: number): Promise<any[]> {
+        const endAddress = startAddress + length;
+        const result = await this.miDebugger.sendCommand(
+            `data-disassemble -s ${hexFormat(startAddress, 8)} -e ${hexFormat(endAddress, 8)} -- 2`
+        );
+ 
+        return result.result('asm_insns').map((entry: any) => ({
+            address: MINode.valueOf(entry, 'address'),
+            functionName: MINode.valueOf(entry, 'func-name'),
+            offset: parseInt(MINode.valueOf(entry, 'offset')),
+            instruction: MINode.valueOf(entry, 'inst'),
+            opcodes: MINode.valueOf(entry, 'opcodes'),
+        }));
+    }
+ 
+    private customReadMemoryRequest(response: any, address: number, length: number): void {
+        this.miDebugger.examineMemory(address, length).then(
+            (data) => {
+                const bytes = data.match(/[0-9a-f]{2}/g).map((hex: string) => parseInt(hex, 16));
+                response.body = {
+                    startAddress: address,
+                    endAddress: address + bytes.length,
+                    bytes,
+                };
+                this.sendResponse(response);
+            },
+            (err) => {
+                response.body = { error: err };
+                this.sendErrorResponse(response, 114, `Unable to read memory: ${err.toString()}`);
+            }
+        );
+    }
+ 
+    private customWriteMemoryRequest(response: any, address: number, data: string): void {
+        const hexAddr = hexFormat(address, 8);
+        this.miDebugger.sendCommand(`data-write-memory-bytes ${hexAddr} ${data}`).then(
+            (result) => {
+                this.sendResponse(response);
+            },
+            (err) => {
+                response.body = { error: err };
+                this.sendErrorResponse(response, 114, `Unable to write memory: ${err.toString()}`);
+            }
+        );
+    }
+ 
+    private customReadRegistersRequest(response: any): void {
+        this.miDebugger.sendCommand('data-list-register-values x').then(
+            (result) => {
+                if (result.resultRecords.resultClass === 'done') {
+                    const registers = result.resultRecords.results[0][1];
+                    response.body = registers.map((reg: any) => {
+                        const obj: any = {};
+                        reg.forEach((pair: any) => {
+                            obj[pair[0]] = pair[1];
+                        });
+                        return obj;
+                    });
+                } else {
+                    response.body = { error: 'Unable to parse response' };
+                }
+                this.sendResponse(response);
+            },
+            (err) => {
+                response.body = { error: err };
+                this.sendErrorResponse(response, 115, `Unable to read registers: ${err.toString()}`);
+            }
+        );
+    }
+ 
+    private customReadRegisterListRequest(response: any): void {
+        this.miDebugger.sendCommand('data-list-register-names').then(
+            (result) => {
+                if (result.resultRecords.resultClass === 'done') {
+                    let names: string[];
+                    result.resultRecords.results.forEach((entry: any) => {
+                        if (entry[0] === 'register-names') {
+                            names = entry[1];
+                        }
+                    });
+                    response.body = names;
+                } else {
+                    response.body = { error: result.resultRecords.results };
+                }
+                this.sendResponse(response);
+            },
+            (err) => {
+                response.body = { error: err };
+                this.sendErrorResponse(response, 116, `Unable to read register list: ${err.toString()}`);
+            }
+        );
+    }
+ 
+    protected disconnectRequest(response: any, args: any): void {
+        if (this.miDebugger) {
+            if (this.attached) {
+                this.miDebugger.detach();
+            } else {
+                this.miDebugger.stop(true);
+            }
+        }
+        this.sendResponse(response);
+    }
+ 
+    protected terminateRequest(response: any, args: any): void {
+        if (this.miDebugger) {
+            this.miDebugger.stop();
+        }
+        this.sendResponse(response);
+    }
+ 
+    protected restartRequest(response: any, args: any): void {
+        const doRestart = () => {
+            this.miDebugger
+                .restart(['interpreter-exec console "pio_restart_target"'])
+                .then(
+                    (result) => {
+                        this.sendResponse(response);
+                        setTimeout(() => {
+                            this.stopped = true;
+                            this.stoppedReason = 'restart';
+                            this.sendEvent(new ContinuedEvent(this.currentThreadId, true));
+                            this.sendEvent(new StoppedEvent('restart', this.currentThreadId, true));
+                        }, 50);
+                    },
+                    (err) => {
+                        this.sendErrorResponse(response, 6, `Could not restart: ${err}`);
+                    }
+                );
+        };
+ 
+        if (this.stopped) {
+            doRestart();
+        } else {
+            this.miDebugger.once('generic-stopped', doRestart);
+            this.miDebugger.sendCommand('exec-interrupt');
+        }
+    }
+ 
+    private handleAdapterOutput(text: string): void {
+        this.sendEvent(new AdapterOutputEvent(text, 'out'));
+    }
+ 
+    private handleMsg(type: string, message: string): void {
+        if (type === 'target') {
+            type = 'stdout';
+        }
+        if (type === 'log') {
+            type = 'stderr';
+        }
+        this.sendEvent(new OutputEvent(message, type));
+    }
+ 
+    private handleRunning(info: any): void {
+        this.stopped = false;
+        this.sendEvent(new ContinuedEvent(this.currentThreadId, true));
+        this.sendEvent(new CustomContinuedEvent(this.currentThreadId, true));
+    }
+ 
+    private handleBreakpoint(info: any): void {
+        const threadId = parseInt(info.record('thread-id') || this.currentThreadId);
+        this.stopped = true;
+        this.stoppedReason = 'breakpoint';
+        this.sendEvent(new StoppedEvent('breakpoint', threadId, true));
+        this.sendEvent(new CustomStopEvent('breakpoint', threadId));
+    }
+ 
+    private handleBreak(info: any): void {
+        this.stopped = true;
+        this.stoppedReason = 'step';
+        this.sendEvent(new StoppedEvent('step', this.currentThreadId, true));
+        this.sendEvent(new CustomStopEvent('step', this.currentThreadId));
+    }
+ 
+    private handlePause(info: any): void {
+        this.stopped = true;
+        this.stoppedReason = 'user request';
+        this.sendEvent(new StoppedEvent('user request', this.currentThreadId, true));
+        this.sendEvent(new CustomStopEvent('user request', this.currentThreadId));
+    }
+ 
+    private handleThreadCreated(info: any): void {
+        this.sendEvent(new ThreadEvent('started', info.threadId));
+    }
+ 
+    private handleThreadExited(info: any): void {
+        this.sendEvent(new ThreadEvent('exited', info.threadId));
+    }
+ 
+    private handleThreadSelected(info: any): void {
+        this.currentThreadId = info.threadId;
+        this.sendEvent(new ThreadEvent('selected', info.threadId));
+    }
+ 
+    private stopEvent(info: any): void {
+        if (!this.started) {
+            this.crashed = true;
+        }
+        if (!this.quit) {
+            this.stopped = true;
+            this.stoppedReason = 'exception';
+            this.sendEvent(new StoppedEvent('exception', this.currentThreadId, true));
+            this.sendEvent(new CustomStopEvent('exception', this.currentThreadId));
+        }
+    }
+ 
+    private quitEvent(): void {
+        this.quit = true;
+        this.sendEvent(new TerminatedEvent());
+    }
+ 
+    private launchError(err: any): void {
+        this.handleMsg('stderr', `Could not start debugger process > ${err.toString()}\n`);
+        this.quitEvent();
+    }
+ 
+    protected setFunctionBreakPointsRequest(response: any, args: any): void {
+        if (!args.breakpoints || !args.breakpoints.length) {
+            return;
+        }
+ 
+        const setBreakpoints = async (shouldContinue: boolean) => {
+            const promises: Promise<any>[] = [];
+            args.breakpoints.forEach((bp: any) => {
+                promises.push(
+                    this.miDebugger.addBreakPoint({
+                        raw: bp.name,
+                        condition: bp.condition,
+                        countCondition: bp.hitCondition,
+                    })
+                );
+            });
+ 
+            try {
+                const results = await Promise.all(promises);
+                const breakpoints: any[] = [];
+                results.forEach((result) => {
+                    if (result[0]) {
+                        breakpoints.push({ line: result[1].line });
+                    }
+                });
+                response.body = { breakpoints };
+                this.sendResponse(response);
+            } catch (err) {
+                this.sendErrorResponse(response, 10, err.toString());
+            }
+ 
+            if (shouldContinue) {
+                await this.miDebugger.sendCommand('exec-continue');
+            }
+        };
+ 
+        const doSet = async () => {
+            if (this.stopped) {
+                await setBreakpoints(false);
+            } else {
+                this.miDebugger.sendCommand('exec-interrupt');
+                this.miDebugger.once('generic-stopped', () => {
+                    setBreakpoints(true);
+                });
+            }
+        };
+ 
+        if (this.debugReady) {
+            doSet();
+        } else {
+            this.miDebugger.once('debug-ready', doSet);
+        }
+    }
+ 
+    protected setBreakPointsRequest(response: any, args: any): void {
+        const setBreakpoints = async (shouldContinue: boolean) => {
+            this.debugReady = true;
+            const existingBreakpoints = (this.breakpointMap.get(args.source.path) || []).map(
+                (bp: any) => bp.number
+            );
+ 
+            try {
+                await this.miDebugger.removeBreakpoints(existingBreakpoints);
+                this.breakpointMap.set(args.source.path, []);
+ 
+                const promises: Promise<any>[] = [];
+                const decodedPath = decodeURIComponent(args.source.path);
+ 
+                if (decodedPath.startsWith('disassembly:/')) {
+                    const params = parseQuery(decodedPath.substr(decodedPath.indexOf('?')));
+                    const func = await this.getDisassemblyForFunction(params.func, params.file);
+                    args.breakpoints.forEach((bp: any) => {
+                        if (bp.line <= func.instructions.length) {
+                            const instruction = func.instructions[bp.line - 1];
+                            promises.push(
+                                this.miDebugger.addBreakPoint({
+                                    file: args.source.path,
+                                    line: bp.line,
+                                    condition: bp.condition,
+                                    countCondition: bp.hitCondition,
+                                    raw: instruction.address,
+                                })
+                            );
+                        }
+                    });
+                } else {
+                    args.breakpoints.forEach((bp: any) => {
+                        promises.push(
+                            this.miDebugger.addBreakPoint({
+                                file: args.source.path,
+                                line: bp.line,
+                                condition: bp.condition,
+                                countCondition: bp.hitCondition,
+                            })
+                        );
+                    });
+                }
+ 
+                const results = (await Promise.all(promises)).filter((r) => r !== null);
+                response.body = {
+                    breakpoints: results.map((bp: any) => ({
+                        line: bp.line,
+                        id: bp.number,
+                        verified: true,
+                    })),
+                };
+                this.breakpointMap.set(args.source.path, results);
+                this.sendResponse(response);
+            } catch (err) {
+                this.sendErrorResponse(response, 9, err.toString());
+            }
+ 
+            if (shouldContinue) {
+                await this.miDebugger.sendCommand('exec-continue');
+            }
+        };
+ 
+        const doSet = async () => {
+            if (this.stopped) {
+                await setBreakpoints(false);
+            } else {
+                await this.miDebugger.sendCommand('exec-interrupt');
+                this.miDebugger.once('generic-stopped', () => {
+                    setBreakpoints(true);
+                });
+            }
+        };
+ 
+        if (this.debugReady) {
+            doSet();
+        } else {
+            this.miDebugger.once('debug-ready', doSet);
+        }
+    }
+ 
+    protected async threadsRequest(response: any): Promise<void> {
+        if (!this.stopped) {
+            response.body = { threads: [] };
+            this.sendResponse(response);
+            return;
+        }
+ 
+        try {
+            const result = await this.miDebugger.sendCommand('thread-list-ids');
+            const threadIds: number[] = result.result('thread-ids').map((t: any) => parseInt(t[1]));
+            const currentThreadId = result.result('current-thread-id');
+ 
+            if (currentThreadId) {
+                this.currentThreadId = parseInt(currentThreadId);
+            } else {
+                await this.miDebugger.sendCommand(`thread-select ${threadIds[0]}`);
+                this.currentThreadId = threadIds[0];
+            }
+ 
+            const threadInfoResults = await Promise.all(
+                threadIds.map((id) => this.miDebugger.sendCommand(`thread-info ${id}`))
+            );
+ 
+            const threads = threadInfoResults
+                .map((info) => {
+                    let thread = info.result('threads');
+                    if (thread.length === 1) {
+                        thread = thread[0];
+                        const id = parseInt(MINode.valueOf(thread, 'id'));
+                        const targetId = MINode.valueOf(thread, 'target-id');
+                        const details = MINode.valueOf(thread, 'details');
+                        return new Thread(id, details || targetId);
+                    }
+                    return null;
+                })
+                .filter((t) => t !== null);
+ 
+            response.body = { threads };
+            this.sendResponse(response);
+        } catch (err) {
+            this.sendErrorResponse(response, 1, `Unable to get thread information: ${err}`);
+        }
+    }
+ 
+    protected async stackTraceRequest(response: any, args: any): Promise<void> {
+        try {
+            const stack = await this.miDebugger.getStack(args.threadId, args.startFrame, args.levels);
+            const frames: StackFrame[] = [];
+ 
+            for (const frame of stack) {
+                const frameIndex = 0xffff & ((args.threadId << 8) | (0xff & frame.level));
+                const filePath = frame.file;
+                let useDisassembly = this.forceDisassembly || !filePath;
+ 
+                if (!useDisassembly) {
+                    useDisassembly = !(await this.checkFileExists(filePath));
+                }
+ 
+                if (
+                    !useDisassembly &&
+                    this.activeEditorPath &&
+                    this.activeEditorPath.startsWith('disassembly://')
+                ) {
+                    const func = this.symbolTable.getFunctionByName(frame.function, frame.fileName);
+                    if (func && encodeDisassembly(func.name, func.file) === this.activeEditorPath) {
+                        useDisassembly = true;
+                    }
+                }
+ 
+                try {
+                    if (useDisassembly) {
+                        const disassembly = await this.getDisassemblyForFunction(
+                            frame.function,
+                            frame.fileName
+                        );
+                        let lineNumber = -1;
+                        disassembly.instructions.forEach((instruction: any, index: number) => {
+                            if (instruction.address === frame.address) {
+                                lineNumber = index + 1;
+                            }
+                        });
+ 
+                        if (lineNumber !== -1) {
+                            const uri = encodeDisassembly(disassembly.name, disassembly.file);
+                            frames.push(
+                                new StackFrame(
+                                    frameIndex,
+                                    `${frame.function}@${frame.address}`,
+                                    new Source(disassembly.name, uri),
+                                    lineNumber,
+                                    0
+                                )
+                            );
+                        } else {
+                            frames.push(
+                                new StackFrame(
+                                    frameIndex,
+                                    frame.function + '@' + frame.address,
+                                    null,
+                                    frame.line,
+                                    0
+                                )
+                            );
+                        }
+                    } else {
+                        frames.push(
+                            new StackFrame(
+                                frameIndex,
+                                frame.function + '@' + frame.address,
+                                new Source(frame.fileName, filePath),
+                                frame.line,
+                                0
+                            )
+                        );
+                    }
+                } catch (err) {
+                    frames.push(
+                        new StackFrame(
+                            frameIndex,
+                            frame.function + '@' + frame.address,
+                            null,
+                            frame.line,
+                            0
+                        )
+                    );
+                }
+            }
+ 
+            response.body = { stackFrames: frames };
+            this.sendResponse(response);
+        } catch (err) {
+            this.sendErrorResponse(response, 12, `Failed to get Stack Trace: ${err.toString()}`);
+        }
+    }
+ 
+    protected configurationDoneRequest(response: any, args: any): void {
+        this.sendResponse(response);
+    }
+ 
+    protected scopesRequest(response: any, args: any): void {
+        const scopes = new Array<Scope>();
+        scopes.push(new Scope('Local', parseInt(args.frameId), false));
+        scopes.push(new Scope('Global', 254, false));
+        scopes.push(new Scope('Static', STATIC_HANDLES_START + parseInt(args.frameId), false));
+        response.body = { scopes };
+        this.sendResponse(response);
+    }
+ 
+    private createVariable(name: string | VariableObject, options?: any): number {
+        if (options) {
+            return this.variableHandles.create(new ExtendedVariable(name as string, options));
+        }
+        return this.variableHandles.create(name as any);
+    }
+ 
+    private findOrCreateVariable(variable: VariableObject): number {
+        let id: number;
+        if (this.variableHandlesReverse.hasOwnProperty(variable.name)) {
+            id = this.variableHandlesReverse[variable.name];
+        } else {
+            id = this.createVariable(variable);
+            this.variableHandlesReverse[variable.name] = id;
+        }
+        return variable.isCompound() ? id : 0;
+    }
+ 
+    private async getVarObjByName(expression: string, name: string): Promise<VariableObject> {
+        let varObj: VariableObject;
+ 
+        try {
+            const updateResult = await this.miDebugger.varUpdate(name);
+            updateResult.result('changelist').forEach((change: any) => {
+                const changeName = MINode.valueOf(change, 'name');
+                const handle = this.variableHandlesReverse[changeName];
+                (this.variableHandles.get(handle) as VariableObject).applyChanges(change);
+            });
+            const handle = this.variableHandlesReverse[name];
+            varObj = this.variableHandles.get(handle) as VariableObject;
+        } catch (err) {
+            if (!(err instanceof MIError && err.message === 'Variable object not found')) {
+                throw err;
+            }
+            varObj = await this.miDebugger.varCreate(expression, name);
+            const id = this.findOrCreateVariable(varObj);
+            varObj.exp = expression;
+            varObj.id = id;
+        }
+ 
+        return varObj;
+    }
+ 
+    private async stackVariablesRequest(
+        threadId: number,
+        frameLevel: number,
+        response: any,
+        args: any
+    ): Promise<void> {
+        const variables: any[] = [];
+        try {
+            const stackVars = await this.miDebugger.getStackVariables(threadId, frameLevel);
+            for (const stackVar of stackVars) {
+                try {
+                    const varName = `var_local_${stackVar.name}`;
+                    const varObj = await this.getVarObjByName(stackVar.name, varName);
+                    variables.push(varObj.toProtocolVariable());
+                } catch (err) {
+                    variables.push({
+                        name: stackVar.name,
+                        value: `<${err}>`,
+                        variablesReference: 0,
+                    });
+                }
+            }
+            response.body = { variables };
+            this.sendResponse(response);
+        } catch (err) {
+            this.sendErrorResponse(response, 1, `Could not expand variable: ${err}`);
+        }
+    }
+ 
+    private async globalVariablesRequest(response: any, args: any): Promise<void> {
+        const globalVars = this.symbolTable.getGlobalVariables();
+        const variables: any[] = [];
+ 
+        try {
+            for (const globalVar of globalVars) {
+                const varName = `var_global_${globalVar.name}`;
+                const varObj = await this.getVarObjByName(globalVar.name, varName);
+                variables.push(varObj.toProtocolVariable());
+            }
+            response.body = { variables };
+            this.sendResponse(response);
+        } catch (err) {
+            this.sendErrorResponse(response, 1, `Could not get global variable information: ${err}`);
+        }
+    }
+ 
+    private async staticVariablesRequest(
+        threadId: number,
+        frameLevel: number,
+        response: any,
+        args: any
+    ): Promise<void> {
+        const variables: any[] = [];
+        try {
+            const frameInfo = await this.miDebugger.getFrame(threadId, frameLevel);
+            const fileName = frameInfo.fileName;
+            const staticVars = this.symbolTable.getStaticVariables(fileName);
+ 
+            for (const staticVar of staticVars) {
+                const varName = `var_static_${fileName}_${staticVar.name}`;
+                const varObj = await this.getVarObjByName(staticVar.name, varName);
+                variables.push(varObj.toProtocolVariable());
+            }
+            response.body = { variables };
+            this.sendResponse(response);
+        } catch (err) {
+            this.sendErrorResponse(response, 1, `Could not get global variable information: ${err}`);
+        }
+    }
+ 
+    private async variableMembersRequest(
+        expression: string,
+        response: any,
+        args: any
+    ): Promise<void> {
+        let evalResult: MINode;
+        try {
+            evalResult = await this.miDebugger.evalExpression(JSON.stringify(expression));
+            try {
+                let expanded: any = expandValue(
+                    this.createVariable.bind(this),
+                    evalResult.result('value'),
+                    expression,
+                    evalResult
+                );
+ 
+                if (expanded) {
+                    if (typeof expanded[0] === 'string') {
+                        const formatValue = (v: any): string => {
+                            if (typeof v === 'object') {
+                                if (v.length !== undefined) {
+                                    return v.join(', ');
+                                }
+                                return JSON.stringify(v);
+                            }
+                            return v;
+                        };
+                        expanded = [
+                            {
+                                name: '<value>',
+                                value: formatValue(expanded),
+                                variablesReference: 0,
+                            },
+                        ];
+                    }
+                    response.body = { variables: expanded };
+                    this.sendResponse(response);
+                } else {
+                    this.sendErrorResponse(response, 2, 'Could not expand variable');
+                }
+            } catch (err) {
+                this.sendErrorResponse(response, 2, `Could not expand variable: ${err}`);
+            }
+        } catch (err) {
+            this.sendErrorResponse(response, 1, `Could not expand variable: ${err}`);
+        }
+    }
+ 
+    protected async variablesRequest(response: any, args: any): Promise<void> {
+        let varRef: any;
+ 
+        if (args.variablesReference === 254) {
+            return this.globalVariablesRequest(response, args);
+        }
+ 
+        if (args.variablesReference >= 256 && args.variablesReference < STATIC_HANDLES_START) {
+            const frameLevel = 0xff & args.variablesReference;
+            const threadId = (0xff00 & args.variablesReference) >>> 8;
+            return this.stackVariablesRequest(threadId, frameLevel, response, args);
+        }
+ 
+        if (
+            args.variablesReference >= STATIC_HANDLES_START &&
+            args.variablesReference <= STATIC_HANDLES_END
+        ) {
+            const frameLevel = 0xff & args.variablesReference;
+            const threadId = (0xff00 & args.variablesReference) >>> 8;
+            return this.staticVariablesRequest(threadId, frameLevel, response, args);
+        }
+ 
+        varRef = this.variableHandles.get(args.variablesReference);
+ 
+        if (typeof varRef === 'string') {
+            return this.variableMembersRequest(varRef, response, args);
+        }
+ 
+        if (typeof varRef === 'object') {
+            if (varRef instanceof VariableObject) {
+                const parent = varRef;
+                try {
+                    const children = await this.miDebugger.varListChildren(varRef.name);
+                    const variables = children.map((child) => {
+                        const id = this.findOrCreateVariable(child);
+                        child.id = id;
+                        if (/^\d+$/.test(child.exp)) {
+                            child.fullExp = `${parent.fullExp || parent.exp}[${child.exp}]`;
+                        } else {
+                            child.fullExp = `${parent.fullExp || parent.exp}.${child.exp}`;
+                        }
+                        return child.toProtocolVariable();
+                    });
+                    response.body = { variables };
+                    this.sendResponse(response);
+                } catch (err) {
+                    this.sendErrorResponse(response, 1, `Could not expand variable: ${err}`);
+                }
+            } else if (varRef instanceof ExtendedVariable) {
+                const extVar = varRef;
+                if (extVar.options.arg) {
+                    const variables: any[] = [];
+                    let firstNull = true;
+                    let index = 0;
+ 
+                    const done = () => {
+                        response.body = { variables };
+                        this.sendResponse(response);
+                    };
+ 
+                    const fetchNext = async () => {
+                        const evalResult = await this.miDebugger.evalExpression(
+                            JSON.stringify(`${extVar.name}+${index})`)
+                        );
+                        try {
+                            const expanded = expandValue(
+                                this.createVariable.bind(this),
+                                evalResult.result('value'),
+                                extVar.name,
+                                evalResult
+                            );
+ 
+                            if (expanded) {
+                                if (typeof expanded === 'string') {
+                                    if (expanded === '<nullptr>') {
+                                        if (!firstNull) {
+                                            return done();
+                                        }
+                                        firstNull = false;
+                                    } else if (expanded[0] !== '"') {
+                                        variables.push({
+                                            name: '[err]',
+                                            value: expanded,
+                                            variablesReference: 0,
+                                        });
+                                        return done();
+                                    }
+                                    variables.push({
+                                        name: `[${index++}]`,
+                                        value: expanded,
+                                        variablesReference: 0,
+                                    });
+                                    fetchNext();
+                                } else {
+                                    variables.push({
+                                        name: '[err]',
+                                        value: expanded,
+                                        variablesReference: 0,
+                                    });
+                                    done();
+                                }
+                            } else {
+                                this.sendErrorResponse(response, 15, 'Could not expand variable');
+                            }
+                        } catch (err) {
+                            this.sendErrorResponse(response, 14, `Could not expand variable: ${err}`);
+                        }
+                    };
+ 
+                    fetchNext();
+                } else {
+                    this.sendErrorResponse(
+                        response,
+                        13,
+                        `Unimplemented variable request options: ${JSON.stringify(extVar.options)}`
+                    );
+                }
+            } else {
+                response.body = { variables: varRef };
+                this.sendResponse(response);
+            }
+        } else {
+            response.body = { variables: [] };
+            this.sendResponse(response);
+        }
+    }
+ 
+    protected async evaluateRequest(response: any, args: any): Promise<void> {
+        if (args.context === 'watch') {
+            try {
+                const varName = `watch_${crypto.createHash('md5').update(args.expression).digest('hex')}}`;
+                const varObj = await this.getVarObjByName(args.expression, varName);
+                response.body = {
+                    result: varObj.value,
+                    variablesReference: varObj.id,
+                };
+                this.sendResponse(response);
+            } catch (err) {
+                response.body = {
+                    result: `<${err.toString()}>`,
+                    variablesReference: 0,
+                };
+                this.sendErrorResponse(response, 7, err.toString());
+            }
+        } else if (args.context === 'hover') {
+            try {
+                const result = await this.miDebugger.evalExpression(args.expression);
+                response.body = {
+                    variablesReference: 0,
+                    result: result.result('value'),
+                };
+                this.sendResponse(response);
+            } catch (err) {
+                this.sendErrorResponse(response, 7, err.toString());
+            }
+        } else {
+            this.miDebugger.sendUserInput(args.expression).then(
+                (result) => {
+                    response.body =
+                        result === undefined
+                            ? { result: '', variablesReference: 0 }
+                            : { result: JSON.stringify(result), variablesReference: 0 };
+                    this.sendResponse(response);
+                },
+                (err) => {
+                    this.sendErrorResponse(response, 8, err.toString());
+                }
+            );
+        }
+    }
+ 
+    protected async setVariableRequest(response: any, args: any): Promise<void> {
+        try {
+            let varName = args.name;
+            const varRef = this.variableHandles.get(args.variablesReference);
+ 
+            if (varRef) {
+                varName = `${(varRef as VariableObject).name}.${args.name}`;
+            } else if (args.variablesReference === 254) {
+                varName = `var_global_${args.name}`;
+            } else if (args.variablesReference >= 256 && args.variablesReference < STATIC_HANDLES_START) {
+                varName = `var_local_${args.name}`;
+            } else if (
+                args.variablesReference >= STATIC_HANDLES_START &&
+                args.variablesReference <= STATIC_HANDLES_END
+            ) {
+                varName = `var_static_${args.name}`;
+            }
+ 
+            const result = await this.miDebugger.varAssign(varName, args.value);
+            response.body = { value: result.result('value') };
+            this.sendResponse(response);
+        } catch (err) {
+            this.sendErrorResponse(response, 11, `Could not update variable: ${err}`);
+        }
+    }
+ 
+    protected pauseRequest(response: any, args: any): void {
+        this.miDebugger.interrupt(args.threadId).then(
+            (result) => {
+                this.sendResponse(response);
+            },
+            (err) => {
+                this.sendErrorResponse(response, 3, `Could not pause: ${err}`);
+            }
+        );
+    }
+ 
+    protected continueRequest(response: any, args: any): void {
+        this.miDebugger.continue(args.threadId).then(
+            (result) => {
+                response.body = { allThreadsContinued: true };
+                this.sendResponse(response);
+            },
+            (err) => {
+                this.sendErrorResponse(response, 2, `Could not continue: ${err}`);
+            }
+        );
+    }
+ 
+    protected async stepInRequest(response: any, args: any): Promise<void> {
+        try {
+            let useDisassembly = this.forceDisassembly;
+            if (!useDisassembly) {
+                const frame = await this.miDebugger.getFrame(args.threadId, 0);
+                useDisassembly = !(await this.checkFileExists(frame.file));
+ 
+                if (
+                    this.activeEditorPath &&
+                    this.activeEditorPath.startsWith('disassembly://')
+                ) {
+                    const func = this.symbolTable.getFunctionByName(frame.function, frame.fileName);
+                    if (encodeDisassembly(func.name, func.file) === this.activeEditorPath) {
+                        useDisassembly = true;
+                    }
+                }
+            }
+            await this.miDebugger.step(args.threadId, useDisassembly);
+            this.sendResponse(response);
+        } catch (err) {
+            this.sendErrorResponse(response, 6, `Could not step over: ${err}`);
+        }
+    }
+ 
+    protected stepOutRequest(response: any, args: any): void {
+        this.miDebugger.stepOut(args.threadId).then(
+            (result) => {
+                this.sendResponse(response);
+            },
+            (err) => {
+                this.sendErrorResponse(response, 5, `Could not step out: ${err}`);
+            }
+        );
+    }
+ 
+    protected async nextRequest(response: any, args: any): Promise<void> {
+        try {
+            let useDisassembly = this.forceDisassembly;
+            if (!useDisassembly) {
+                const frame = await this.miDebugger.getFrame(args.threadId, 0);
+                useDisassembly = !(await this.checkFileExists(frame.file));
+ 
+                if (
+                    this.activeEditorPath &&
+                    this.activeEditorPath.startsWith('disassembly://')
+                ) {
+                    const func = this.symbolTable.getFunctionByName(frame.function, frame.fileName);
+                    if (encodeDisassembly(func.name, func.file) === this.activeEditorPath) {
+                        useDisassembly = true;
+                    }
+                }
+            }
+            await this.miDebugger.next(args.threadId, useDisassembly);
+            this.sendResponse(response);
+        } catch (err) {
+            this.sendErrorResponse(response, 6, `Could not step over: ${err}`);
+        }
+    }
+ 
+    private checkFileExists(file: string): Promise<boolean> {
+        if (!file) {
+            return Promise.resolve(false);
+        }
+        if (this.fileExistsCache.has(file)) {
+            return Promise.resolve(this.fileExistsCache.get(file));
+        }
+        return new Promise((resolve, reject) => {
+            fs.exists(file, (exists) => {
+                this.fileExistsCache.set(file, exists);
+                resolve(exists);
+            });
+        });
+    }
+}
+ 
+DebugSession.run(GDBDebugSession);
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/backend/expand_value.ts.html b/coverage/lcov-report/src/backend/expand_value.ts.html new file mode 100644 index 0000000..e3aeb51 --- /dev/null +++ b/coverage/lcov-report/src/backend/expand_value.ts.html @@ -0,0 +1,937 @@ + + + + + + Code coverage report for src/backend/expand_value.ts + + + + + + + + + +
+
+

All files / src/backend expand_value.ts

+
+ +
+ 0% + Statements + 0/181 +
+ + +
+ 0% + Branches + 0/105 +
+ + +
+ 0% + Functions + 0/12 +
+ + +
+ 0% + Lines + 0/181 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { MINode } from './mi_parse';
+ 
+const VARIABLE_ASSIGNMENT_REGEX = /^([a-zA-Z_\-][a-zA-Z0-9_\-]*|\[\d+\])\s*=\s*/;
+const VARIABLE_NAME_REGEX = /^[a-zA-Z_\-][a-zA-Z0-9_\-]*/;
+const ANGLE_BRACKET_REGEX = /^\<.+?\>/;
+const HEX_STRING_REGEX = /^(0x[0-9a-fA-F]+\s*)"/;
+const HEX_REGEX = /^0x[0-9a-fA-F]+/;
+const NULL_PTR_REGEX = /^0x0+\b/;
+const CHAR_CODE_STRING_REGEX = /^(\d+) ['"]/;
+const NUMBER_REGEX = /^\d+(\.\d+)?/;
+ 
+export function isExpandable(value: string): number {
+    value = value.trim();
+    if (value.length === 0) {
+        return 0;
+    }
+    if (value.startsWith('{...}')) {
+        return 2;
+    }
+    if (value[0] === '{') {
+        return 1;
+    }
+    if (value.startsWith('true') || value.startsWith('false') || NULL_PTR_REGEX.exec(value) || HEX_STRING_REGEX.exec(value)) {
+        return 0;
+    }
+    if (HEX_REGEX.exec(value)) {
+        return 2;
+    }
+    // Check other patterns but always return 0 for them
+    CHAR_CODE_STRING_REGEX.exec(value) || NUMBER_REGEX.exec(value) || VARIABLE_NAME_REGEX.exec(value) || ANGLE_BRACKET_REGEX.exec(value);
+    return 0;
+}
+ 
+export function expandValue(
+    createVariableReference: (name: string | any, options?: any) => number,
+    value: string,
+    root: string = '',
+    extra?: any
+): any {
+    const parseQuotedString = (): string => {
+        value = value.trim();
+        if (value[0] !== '"' && value[0] !== "'") {
+            return '';
+        }
+ 
+        let pos = 1;
+        let scanning = true;
+        const quote = value[0];
+        let remaining = value.substr(1);
+        let escaped = false;
+ 
+        while (scanning) {
+            if (escaped) {
+                escaped = false;
+            } else if (remaining[0] === '\\') {
+                escaped = true;
+            } else if (remaining[0] === quote) {
+                scanning = false;
+            }
+            remaining = remaining.substr(1);
+            pos++;
+        }
+ 
+        const result = value.substr(0, pos).trim();
+        value = value.substr(pos).trim();
+        return result;
+    };
+ 
+    const stack = [root];
+    let lastAssignedVariable = '';
+ 
+    const buildFullExpression = (name: string): string => {
+        let fullPath = '';
+        let derefPrefix = '';
+        stack.push(name);
+        stack.forEach((part) => {
+            derefPrefix = '';
+            if (part === '') {
+                // skip
+            } else if (part.startsWith('[')) {
+                fullPath += part;
+            } else if (fullPath) {
+                while (part.startsWith('*')) {
+                    derefPrefix += '*';
+                    part = part.substr(1);
+                }
+                fullPath = fullPath + '.' + part;
+            } else {
+                fullPath = part;
+            }
+        });
+        stack.pop();
+        return derefPrefix + fullPath;
+    };
+ 
+    let parseValue: () => any;
+    let parseCommaValue: () => any;
+    let parseNamedValue: (pushToStack?: boolean) => any;
+    let parseCommaNamedValue: (pushToStack?: boolean) => any;
+    let createResult: (name: string, val: any) => any;
+ 
+    parseValue = (): any => {
+        value = value.trim();
+ 
+        if (value[0] === '"') {
+            return parseQuotedString();
+        }
+ 
+        if (value[0] === '{') {
+            // Parse object/array
+            return (() => {
+                value = value.trim();
+                if (value[0] !== '{') {
+                    return;
+                }
+                value = value.substr(1).trim();
+                if (value[0] === '}') {
+                    value = value.substr(1).trim();
+                    return [];
+                }
+                if (value.startsWith('...')) {
+                    value = value.substr(3).trim();
+                    if (value[0] === '}') {
+                        value = value.substr(1).trim();
+                        return '<...>';
+                    }
+                }
+ 
+                // Check if this is an array or named values
+                const equalsIdx = value.indexOf('=');
+                const braceIdx = value.indexOf('{');
+                const commaIdx = value.indexOf(',');
+ 
+                let checkIdx = braceIdx;
+                if (commaIdx !== -1 && commaIdx < braceIdx) {
+                    checkIdx = commaIdx;
+                }
+ 
+                if ((checkIdx !== -1 && equalsIdx > checkIdx) || equalsIdx === -1) {
+                    // Array of values
+                    const arr: any[] = [];
+                    stack.push('[0]');
+                    let val = parseValue();
+                    stack.pop();
+                    arr.push(createResult('[0]', val));
+ 
+                    let index = 0;
+                    for (;;) {
+                        stack.push('[' + (++index) + ']');
+                        val = parseCommaValue();
+                        if (!val) {
+                            stack.pop();
+                            break;
+                        }
+                        stack.pop();
+                        arr.push(createResult('[' + index + ']', val));
+                    }
+                    value = value.substr(1).trim();
+                    return arr;
+                }
+ 
+                // Named values
+                let named = parseNamedValue(true);
+                if (named) {
+                    const arr: any[] = [];
+                    arr.push(named);
+                    while ((named = parseCommaNamedValue(true))) {
+                        arr.push(named);
+                    }
+                    value = value.substr(1).trim();
+                    return arr;
+                }
+            })();
+        }
+ 
+        // Parse primitive value
+        return (() => {
+            value = value.trim();
+            let match: RegExpExecArray;
+            let result: any;
+ 
+            if (value.length === 0) {
+                result = undefined;
+            } else if (value.startsWith('true')) {
+                result = 'true';
+                value = value.substr(4).trim();
+            } else if (value.startsWith('false')) {
+                result = 'false';
+                value = value.substr(5).trim();
+            } else if ((match = NULL_PTR_REGEX.exec(value))) {
+                result = '<nullptr>';
+                value = value.substr(match[0].length).trim();
+            } else if ((match = HEX_STRING_REGEX.exec(value))) {
+                value = value.substr(match[1].length).trim();
+                result = parseQuotedString();
+            } else if ((match = HEX_REGEX.exec(value))) {
+                result = '*' + match[0];
+                value = value.substr(match[0].length).trim();
+            } else if ((match = CHAR_CODE_STRING_REGEX.exec(value))) {
+                result = match[1];
+                value = value.substr(match[0].length - 1);
+                result += ' ' + parseQuotedString();
+            } else if (
+                (match = NUMBER_REGEX.exec(value)) ||
+                (match = VARIABLE_NAME_REGEX.exec(value)) ||
+                (match = ANGLE_BRACKET_REGEX.exec(value))
+            ) {
+                result = match[0];
+                value = value.substr(match[0].length).trim();
+            } else {
+                result = value;
+            }
+ 
+            return result;
+        })();
+    };
+ 
+    parseNamedValue = (pushToStack: boolean = false): any => {
+        value = value.trim();
+        const match = VARIABLE_ASSIGNMENT_REGEX.exec(value);
+        if (!match) {
+            return;
+        }
+        value = value.substr(match[0].length).trim();
+        const name = (lastAssignedVariable = match[1]);
+        if (pushToStack) {
+            stack.push(lastAssignedVariable);
+        }
+        const val = parseValue();
+        if (pushToStack) {
+            stack.pop();
+        }
+        return createResult(name, val);
+    };
+ 
+    createResult = (name: string, val: any): any => {
+        let variablesReference = 0;
+ 
+        if (typeof val === 'object') {
+            variablesReference = createVariableReference(val);
+            val = 'Object';
+        }
+ 
+        if (typeof val === 'string' && val.startsWith('*0x')) {
+            if (extra && MINode.valueOf(extra, 'arg') === '1') {
+                variablesReference = createVariableReference(buildFullExpression('*(' + name), { arg: true });
+                val = '<args>';
+            } else {
+                variablesReference = createVariableReference(buildFullExpression('*' + name));
+                val = 'Object@' + val;
+            }
+        }
+ 
+        if (typeof val === 'string' && val.startsWith('<...>')) {
+            variablesReference = createVariableReference(buildFullExpression(name));
+            val = '...';
+        }
+ 
+        return {
+            name,
+            value: val,
+            variablesReference,
+        };
+    };
+ 
+    parseCommaValue = (): any => {
+        value = value.trim();
+        if (value[0] === ',') {
+            value = value.substr(1).trim();
+            return parseValue();
+        }
+    };
+ 
+    parseCommaNamedValue = (pushToStack: boolean = false): any => {
+        value = value.trim();
+        if (value[0] === ',') {
+            value = value.substr(1).trim();
+            return parseNamedValue(pushToStack);
+        }
+    };
+ 
+    value = value.trim();
+    return parseValue();
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/backend/index.html b/coverage/lcov-report/src/backend/index.html new file mode 100644 index 0000000..307f9dc --- /dev/null +++ b/coverage/lcov-report/src/backend/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for src/backend + + + + + + + + + +
+
+

All files src/backend

+
+ +
+ 0% + Statements + 0/1025 +
+ + +
+ 0% + Branches + 0/466 +
+ + +
+ 0% + Functions + 0/152 +
+ + +
+ 0% + Lines + 0/1013 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
adapter.ts +
+
0%0/5980%0/2010%0/1150%0/588
expand_value.ts +
+
0%0/1810%0/1050%0/120%0/181
mi_parse.ts +
+
0%0/1830%0/1130%0/110%0/182
symbols.ts +
+
0%0/630%0/470%0/140%0/62
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/backend/mi2/index.html b/coverage/lcov-report/src/backend/mi2/index.html new file mode 100644 index 0000000..69e3131 --- /dev/null +++ b/coverage/lcov-report/src/backend/mi2/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/backend/mi2 + + + + + + + + + +
+
+

All files src/backend/mi2

+
+ +
+ 0% + Statements + 0/310 +
+ + +
+ 0% + Branches + 0/144 +
+ + +
+ 0% + Functions + 0/91 +
+ + +
+ 0% + Lines + 0/309 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
mi2.ts +
+
0%0/2790%0/1330%0/820%0/278
types.ts +
+
0%0/310%0/110%0/90%0/31
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/backend/mi2/mi2.ts.html b/coverage/lcov-report/src/backend/mi2/mi2.ts.html new file mode 100644 index 0000000..35f8ef3 --- /dev/null +++ b/coverage/lcov-report/src/backend/mi2/mi2.ts.html @@ -0,0 +1,1786 @@ + + + + + + Code coverage report for src/backend/mi2/mi2.ts + + + + + + + + + +
+
+

All files / src/backend/mi2 mi2.ts

+
+ +
+ 0% + Statements + 0/279 +
+ + +
+ 0% + Branches + 0/133 +
+ + +
+ 0% + Functions + 0/82 +
+ + +
+ 0% + Lines + 0/278 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as childProcess from 'child_process';
+import { EventEmitter } from 'events';
+import { VariableObject, MIError } from './types';
+import { parseMI, MINode } from '../mi_parse';
+ 
+export function escape(str: string): string {
+    return str.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
+}
+ 
+const MI_OUTPUT_REGEX = /^(?:\d*|undefined)[\*\+\=]|[\~\@\&\^]/;
+const GDB_PROMPT_REGEX = /(?:\d*|undefined)\(gdb\)/;
+const BREAK_COUNT_REGEX = /\d+/;
+ 
+function isPlainOutput(line: string): boolean {
+    return !MI_OUTPUT_REGEX.exec(line);
+}
+ 
+export class MI2 extends EventEmitter {
+    private process: childProcess.ChildProcess;
+    private currentToken: number = 1;
+    private handlers: { [token: number]: (result: MINode) => void } = {};
+    public printCalls: boolean;
+    public debugOutput: boolean;
+    private debugReadyFired: boolean = false;
+    private debugReadyTimeout: any;
+    private buffer: string;
+    private errbuf: string;
+ 
+    constructor(
+        public application: string,
+        public args: string[]
+    ) {
+        super();
+    }
+ 
+    connect(cwd: string, commands: string[]): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            const args = [...this.args];
+            const env = Object.create(process.env);
+            if (process.env.PLATFORMIO_PATH) {
+                env.PATH = process.env.PLATFORMIO_PATH;
+                env.Path = process.env.PLATFORMIO_PATH;
+            }
+ 
+            this.process = childProcess.spawn(this.application, args, {
+                cwd,
+                env,
+                shell: process.platform === 'win32',
+            });
+ 
+            this.process.stdout.on('data', this.stdout.bind(this));
+            this.process.stderr.on('data', this.stderr.bind(this));
+            this.process.on('exit', (() => {
+                this.emit('quit');
+            }).bind(this));
+            this.process.on('error', ((err: Error) => {
+                this.emit('launcherror', err);
+            }).bind(this));
+ 
+            const initCommands = [
+                this.sendCommand('gdb-set target-async on', true),
+                ...commands.map((cmd) => this.sendCommand(cmd)),
+            ];
+            Promise.all(initCommands).then(() => {
+                resolve(true);
+            }, reject);
+        });
+    }
+ 
+    stdout(data: any): void {
+        this.buffer += typeof data === 'string' ? data : data.toString('utf8');
+        const newlineIndex = this.buffer.lastIndexOf('\n');
+        if (newlineIndex !== -1) {
+            this.onOutput(this.buffer.substr(0, newlineIndex));
+            this.buffer = this.buffer.substr(newlineIndex + 1);
+        }
+        if (this.buffer.length) {
+            if (this.onOutputPartial(this.buffer)) {
+                this.buffer = '';
+            }
+        }
+    }
+ 
+    stderr(data: any): void {
+        this.errbuf += typeof data === 'string' ? data : data.toString('utf8');
+        const newlineIndex = this.errbuf.lastIndexOf('\n');
+        if (newlineIndex !== -1) {
+            this.onOutputStderr(this.errbuf.substr(0, newlineIndex));
+            this.errbuf = this.errbuf.substr(newlineIndex + 1);
+        }
+        if (this.errbuf.length) {
+            this.logNoNewLine('stderr', this.errbuf);
+            this.errbuf = '';
+        }
+    }
+ 
+    onOutputStderr(output: string): void {
+        const lines = output.split('\n');
+        lines.forEach((line) => {
+            this.log('stderr', line);
+        });
+    }
+ 
+    onOutputPartial(line: string): boolean {
+        if (isPlainOutput(line)) {
+            this.logNoNewLine('stdout', line);
+            return true;
+        }
+        return false;
+    }
+ 
+    onOutput(output: string): void {
+        const lines = output.split('\n');
+        lines.forEach((line) => {
+            if (isPlainOutput(line)) {
+                if (!GDB_PROMPT_REGEX.exec(line)) {
+                    this.log('stdout', line);
+                }
+            } else {
+                const parsed = parseMI(line);
+                if (this.debugOutput) {
+                    this.log('log', 'GDB -> App: ' + JSON.stringify(parsed));
+                }
+ 
+                let handled = false;
+ 
+                if (parsed.token !== undefined && this.handlers[parsed.token]) {
+                    this.handlers[parsed.token](parsed);
+                    delete this.handlers[parsed.token];
+                    handled = true;
+                }
+ 
+                if (!handled && parsed.resultRecords && parsed.resultRecords.resultClass === 'error') {
+                    this.log('stderr', parsed.result('msg') || line);
+                }
+ 
+                if (parsed.outOfBandRecord) {
+                    parsed.outOfBandRecord.forEach((record: any) => {
+                        if (record.isStream) {
+                            if (record.content.includes('PlatformIO: Initialization completed')) {
+                                this.debugReadyTimeout = setTimeout(() => {
+                                    this.debugReadyFired = true;
+                                    this.emit('debug-ready');
+                                }, 200);
+                                this.once('generic-stopped', () => {
+                                    if (!this.debugReadyFired) {
+                                        clearTimeout(this.debugReadyTimeout);
+                                        this.emit('debug-ready');
+                                    }
+                                });
+                            }
+                            this.log(record.type, record.content);
+                        } else if (record.type === 'exec') {
+                            this.emit('exec-async-output', parsed);
+                            if (record.asyncClass === 'running') {
+                                this.emit('running', parsed);
+                            } else if (record.asyncClass === 'stopped') {
+                                const reason = parsed.record('reason');
+                                if (reason === 'breakpoint-hit') {
+                                    this.emit('breakpoint', parsed);
+                                } else if (reason === 'end-stepping-range') {
+                                    this.emit('step-end', parsed);
+                                } else if (reason === 'function-finished') {
+                                    this.emit('step-out-end', parsed);
+                                } else if (reason === 'signal-received') {
+                                    this.emit('signal-stop', parsed);
+                                } else if (reason === 'exited-normally') {
+                                    this.emit('exited-normally', parsed);
+                                } else if (reason === 'exited') {
+                                    this.log('stderr', 'Program exited with code ' + parsed.record('exit-code'));
+                                    this.emit('exited-normally', parsed);
+                                } else {
+                                    if (this.debugReadyFired) {
+                                        this.log('console', 'Not implemented stop reason (assuming exception): ' + reason);
+                                    }
+                                    this.emit('stopped', parsed);
+                                }
+                                this.emit('generic-stopped', parsed);
+                            } else {
+                                this.log('log', JSON.stringify(parsed));
+                            }
+                        } else if (record.type === 'notify') {
+                            if (record.asyncClass === 'thread-created') {
+                                const threadId = parsed.result('id');
+                                const threadGroupId = parsed.result('group-id');
+                                this.emit('thread-created', { threadId, threadGroupId });
+                            } else if (record.asyncClass === 'thread-exited') {
+                                const threadId = parsed.result('id');
+                                const threadGroupId = parsed.result('group-id');
+                                this.emit('thread-exited', { threadId, threadGroupId });
+                            } else if (record.asyncClass === 'thread-selected') {
+                                const threadId = parsed.result('id');
+                                this.emit('thread-selected', { threadId });
+                            }
+                        }
+                    });
+                    handled = true;
+                }
+ 
+                if (parsed.token === undefined && parsed.resultRecords === undefined && parsed.outOfBandRecord.length === 0) {
+                    handled = true;
+                }
+ 
+                if (!handled) {
+                    this.log('log', 'Unhandled: ' + JSON.stringify(parsed));
+                }
+            }
+        });
+    }
+ 
+    stop(forceKill: boolean = false): void {
+        if (forceKill) {
+            const proc = this.process;
+            const killTimeout = setTimeout(() => {
+                process.kill(-proc.pid);
+            }, 1000);
+            this.process.on('exit', (code: any) => {
+                clearTimeout(killTimeout);
+            });
+        }
+        this.sendRaw('-gdb-exit');
+    }
+ 
+    detach(): void {
+        const proc = this.process;
+        const killTimeout = setTimeout(() => {
+            process.kill(-proc.pid);
+        }, 1000);
+        this.process.on('exit', (code: any) => {
+            clearTimeout(killTimeout);
+        });
+        this.sendRaw('-target-detach');
+    }
+ 
+    interrupt(threadId: number): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            this.sendCommand(`exec-interrupt --thread ${threadId}`).then(
+                (result) => {
+                    resolve(result.resultRecords.resultClass === 'done');
+                },
+                reject
+            );
+        });
+    }
+ 
+    continue(threadId: number): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            this.sendCommand(`exec-continue --thread ${threadId}`).then(
+                (result) => {
+                    resolve(result.resultRecords.resultClass === 'running');
+                },
+                reject
+            );
+        });
+    }
+ 
+    next(threadId: number, instruction: boolean): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            const command = instruction ? 'exec-next-instruction' : 'exec-next';
+            this.sendCommand(`${command} --thread ${threadId}`).then(
+                (result) => {
+                    resolve(result.resultRecords.resultClass === 'running');
+                },
+                reject
+            );
+        });
+    }
+ 
+    step(threadId: number, instruction: boolean): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            const command = instruction ? 'exec-step-instruction' : 'exec-step';
+            this.sendCommand(`${command} --thread ${threadId}`).then(
+                (result) => {
+                    resolve(result.resultRecords.resultClass === 'running');
+                },
+                reject
+            );
+        });
+    }
+ 
+    stepOut(threadId: number): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            this.sendCommand(`exec-finish --thread ${threadId}`).then(
+                (result) => {
+                    resolve(result.resultRecords.resultClass === 'running');
+                },
+                reject
+            );
+        });
+    }
+ 
+    restart(commands: string[]): Promise<boolean> {
+        return this._sendCommandSequence(commands);
+    }
+ 
+    _sendCommandSequence(commands: string[]): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            const executeNext = ((remaining: string[]) => {
+                if (remaining.length === 0) {
+                    resolve(true);
+                    return;
+                }
+                const cmd = remaining[0];
+                this.sendCommand(cmd).then(
+                    (result) => {
+                        executeNext(remaining.slice(1));
+                    },
+                    reject
+                );
+            }).bind(this);
+            executeNext(commands);
+        });
+    }
+ 
+    changeVariable(name: string, rawValue: string): Promise<MINode> {
+        return this.sendCommand('gdb-set var ' + name + '=' + rawValue);
+    }
+ 
+    setBreakPointCondition(breakpointNumber: number, condition: string): Promise<MINode> {
+        return this.sendCommand('break-condition ' + breakpointNumber + ' ' + condition);
+    }
+ 
+    addBreakPoint(breakpoint: any): Promise<any> {
+        return new Promise((resolve, reject) => {
+            let args = '';
+ 
+            if (breakpoint.countCondition) {
+                if (breakpoint.countCondition[0] === '>') {
+                    args += '-i ' + BREAK_COUNT_REGEX.exec(breakpoint.countCondition.substr(1))[0] + ' ';
+                } else {
+                    const count = BREAK_COUNT_REGEX.exec(breakpoint.countCondition)[0];
+                    if (count.length !== breakpoint.countCondition.length) {
+                        this.log(
+                            'stderr',
+                            "Unsupported break count expression: '" +
+                            breakpoint.countCondition +
+                            "'. Only supports 'X' for breaking once after X times or '>X' for ignoring the first X breaks"
+                        );
+                        args += '-t ';
+                    } else if (parseInt(count) !== 0) {
+                        args += '-t -i ' + parseInt(count) + ' ';
+                    }
+                }
+            }
+ 
+            if (breakpoint.raw) {
+                args += '*' + escape(breakpoint.raw);
+            } else {
+                args += '"' + escape(breakpoint.file) + ':' + breakpoint.line + '"';
+            }
+ 
+            this.sendCommand(`break-insert ${args}`).then(
+                (result) => {
+                    if (result.resultRecords.resultClass === 'done') {
+                        const bkptNumber = parseInt(result.result('bkpt.number'));
+                        breakpoint.number = bkptNumber;
+                        if (breakpoint.condition) {
+                            this.setBreakPointCondition(bkptNumber, breakpoint.condition).then(
+                                (condResult) => {
+                                    if (condResult.resultRecords.resultClass === 'done') {
+                                        resolve(breakpoint);
+                                    } else {
+                                        resolve(null);
+                                    }
+                                },
+                                reject
+                            );
+                        } else {
+                            resolve(breakpoint);
+                        }
+                    } else {
+                        resolve(null);
+                    }
+                },
+                reject
+            );
+        });
+    }
+ 
+    removeBreakpoints(breakpointNumbers: number[]): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            if (breakpointNumbers.length === 0) {
+                resolve(true);
+            } else {
+                const cmd = 'break-delete ' + breakpointNumbers.join(' ');
+                this.sendCommand(cmd).then(
+                    (result) => {
+                        resolve(result.resultRecords.resultClass === 'done');
+                    },
+                    reject
+                );
+            }
+        });
+    }
+ 
+    getFrame(threadId: number, frameLevel: number): Promise<any> {
+        return new Promise((resolve, reject) => {
+            const cmd = `stack-info-frame --thread ${threadId} --frame ${frameLevel}`;
+            this.sendCommand(cmd).then(
+                (result) => {
+                    const frame = result.result('frame');
+                    const level = MINode.valueOf(frame, 'level');
+                    const address = MINode.valueOf(frame, 'addr');
+                    const func = MINode.valueOf(frame, 'func');
+                    const file = MINode.valueOf(frame, 'file');
+                    const fullname = MINode.valueOf(frame, 'fullname');
+                    let line = 0;
+                    const lineStr = MINode.valueOf(frame, 'line');
+                    if (lineStr) {
+                        line = parseInt(lineStr);
+                    }
+                    resolve({
+                        address,
+                        fileName: file,
+                        file: fullname,
+                        function: func,
+                        level,
+                        line,
+                    });
+                },
+                reject
+            );
+        });
+    }
+ 
+    getStack(threadId: number, startFrame: number, levels: number): Promise<any[]> {
+        return new Promise((resolve, reject) => {
+            this.sendCommand(`stack-list-frames --thread ${threadId} ${startFrame} ${levels}`).then(
+                (result) => {
+                    const stack = result.result('stack');
+                    const frames: any[] = [];
+                    stack.forEach((entry: any) => {
+                        const level = MINode.valueOf(entry, '@frame.level');
+                        const address = MINode.valueOf(entry, '@frame.addr');
+                        const func = MINode.valueOf(entry, '@frame.func');
+                        const file = MINode.valueOf(entry, '@frame.file');
+                        const fullname = MINode.valueOf(entry, '@frame.fullname');
+                        let line = 0;
+                        const lineStr = MINode.valueOf(entry, '@frame.line');
+                        if (lineStr) {
+                            line = parseInt(lineStr);
+                        }
+                        const from = parseInt(MINode.valueOf(entry, '@frame.from'));
+                        frames.push({
+                            address,
+                            fileName: file,
+                            file: fullname,
+                            function: func || from,
+                            level,
+                            line,
+                        });
+                    });
+                    resolve(frames);
+                },
+                reject
+            );
+        });
+    }
+ 
+    async getStackVariables(threadId: number, frameLevel: number): Promise<any[]> {
+        const result = await this.sendCommand(
+            `stack-list-variables --thread ${threadId} --frame ${frameLevel} --simple-values`
+        );
+        const variables = result.result('variables');
+        const vars: any[] = [];
+        for (const variable of variables) {
+            const name = MINode.valueOf(variable, 'name');
+            const valueStr = MINode.valueOf(variable, 'value');
+            const type = MINode.valueOf(variable, 'type');
+            vars.push({ name, valueStr, type, raw: variable });
+        }
+        return vars;
+    }
+ 
+    async examineMemory(address: number, length: number): Promise<string> {
+        let result = '';
+        let currentAddress = address;
+        while (length > 0) {
+            const chunkSize = length > 1024 ? 1024 : length;
+            const response = await this.sendCommand(
+                `data-read-memory-bytes 0x${currentAddress.toString(16)} ${chunkSize}`
+            );
+            result += response.result('memory[0].contents');
+            length -= chunkSize;
+            currentAddress += chunkSize;
+        }
+        return result;
+    }
+ 
+    evalExpression(expression: string): Promise<MINode> {
+        return new Promise((resolve, reject) => {
+            this.sendCommand('data-evaluate-expression ' + expression).then(
+                (result) => {
+                    resolve(result);
+                },
+                reject
+            );
+        });
+    }
+ 
+    async varCreate(expression: string, name: string = '-'): Promise<VariableObject> {
+        const result = await this.sendCommand(`var-create ${name} @ "${expression}"`);
+        return new VariableObject(result.result(''));
+    }
+ 
+    async varEvalExpression(name: string): Promise<MINode> {
+        return this.sendCommand(`var-evaluate-expression ${name}`);
+    }
+ 
+    async varListChildren(name: string): Promise<VariableObject[]> {
+        const result = await this.sendCommand(`var-list-children --all-values ${name}`);
+        return (result.result('children') || []).map((child: any) => new VariableObject(child[1]));
+    }
+ 
+    async varUpdate(name: string = '*'): Promise<MINode> {
+        return this.sendCommand(`var-update --all-values ${name}`);
+    }
+ 
+    async varAssign(name: string, value: string): Promise<MINode> {
+        return this.sendCommand(`var-assign ${name} ${value}`);
+    }
+ 
+    logNoNewLine(type: string, message: string): void {
+        this.emit('msg', type, message);
+    }
+ 
+    log(type: string, message: string): void {
+        this.emit('msg', type, message[message.length - 1] === '\n' ? message : message + '\n');
+    }
+ 
+    sendUserInput(command: string): Promise<MINode> {
+        if (command.startsWith('-')) {
+            return this.sendCommand(command.substr(1));
+        }
+        return this.sendCommand(`interpreter-exec console "${command}"`);
+    }
+ 
+    sendRaw(raw: string): void {
+        if (this.printCalls) {
+            this.log('log', raw);
+        }
+        this.process.stdin.write(raw + '\n');
+    }
+ 
+    sendCommand(command: string, suppressErrors: boolean = false): Promise<MINode> {
+        const token = this.currentToken++;
+        return new Promise((resolve, reject) => {
+            this.handlers[token] = (result: MINode) => {
+                if (result && result.resultRecords && result.resultRecords.resultClass === 'error') {
+                    if (suppressErrors) {
+                        this.log('stderr', `WARNING: Error executing command '${command}'`);
+                        resolve(result);
+                    } else {
+                        reject(new MIError(result.result('msg') || 'Internal error', command));
+                    }
+                } else {
+                    resolve(result);
+                }
+            };
+            this.sendRaw(token + '-' + command);
+        });
+    }
+ 
+    isReady(): boolean {
+        return !!this.process;
+    }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/backend/mi2/types.ts.html b/coverage/lcov-report/src/backend/mi2/types.ts.html new file mode 100644 index 0000000..acd93ff --- /dev/null +++ b/coverage/lcov-report/src/backend/mi2/types.ts.html @@ -0,0 +1,334 @@ + + + + + + Code coverage report for src/backend/mi2/types.ts + + + + + + + + + +
+
+

All files / src/backend/mi2 types.ts

+
+ +
+ 0% + Statements + 0/31 +
+ + +
+ 0% + Branches + 0/11 +
+ + +
+ 0% + Functions + 0/9 +
+ + +
+ 0% + Lines + 0/31 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { MINode } from '../mi_parse';
+ 
+export class VariableObject {
+    public name: string;
+    public exp: string;
+    public numchild: number;
+    public type: string;
+    public value: string;
+    public threadId: string;
+    public frozen: boolean;
+    public dynamic: boolean;
+    public displayhint: string;
+    public hasMore: boolean;
+    public id: number;
+    public fullExp: string;
+ 
+    constructor(node: any) {
+        this.name = MINode.valueOf(node, 'name');
+        this.exp = MINode.valueOf(node, 'exp');
+        this.numchild = parseInt(MINode.valueOf(node, 'numchild'));
+        this.type = MINode.valueOf(node, 'type');
+        this.value = MINode.valueOf(node, 'value');
+        this.threadId = MINode.valueOf(node, 'thread-id');
+        this.frozen = !!MINode.valueOf(node, 'frozen');
+        this.dynamic = !!MINode.valueOf(node, 'dynamic');
+        this.displayhint = MINode.valueOf(node, 'displayhint');
+        this.hasMore = !!MINode.valueOf(node, 'has_more');
+    }
+ 
+    applyChanges(node: any): void {
+        this.value = MINode.valueOf(node, 'value');
+        if (MINode.valueOf(node, 'type_changed')) {
+            this.type = MINode.valueOf(node, 'new_type');
+        }
+        this.dynamic = !!MINode.valueOf(node, 'dynamic');
+        this.displayhint = MINode.valueOf(node, 'displayhint');
+        this.hasMore = !!MINode.valueOf(node, 'has_more');
+    }
+ 
+    isCompound(): boolean {
+        return (
+            this.numchild > 0 ||
+            this.value === '{...}' ||
+            (this.dynamic && (this.displayhint === 'array' || this.displayhint === 'map'))
+        );
+    }
+ 
+    toProtocolVariable(): any {
+        return {
+            name: this.exp,
+            evaluateName: this.fullExp || this.exp,
+            value: this.value === undefined ? '<unknown>' : this.value,
+            type: this.type,
+            presentationHint: { kind: this.displayhint },
+            variablesReference: this.id,
+        };
+    }
+}
+ 
+export class MIError {
+    public readonly message: string;
+    public readonly source: string;
+ 
+    constructor(message: string, source: string) {
+        Object.defineProperty(this, 'name', {
+            get: () => this.constructor.name,
+        });
+        Object.defineProperty(this, 'message', {
+            get: () => message,
+        });
+        Object.defineProperty(this, 'source', {
+            get: () => source,
+        });
+        Error.captureStackTrace(this, this.constructor);
+    }
+ 
+    toString(): string {
+        return `${(this as any).message} (from ${(this as any).source})`;
+    }
+}
+ 
+Object.setPrototypeOf(MIError, Object.create(Error.prototype));
+(MIError as any).prototype.constructor = MIError;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/backend/mi_parse.ts.html b/coverage/lcov-report/src/backend/mi_parse.ts.html new file mode 100644 index 0000000..0877b7e --- /dev/null +++ b/coverage/lcov-report/src/backend/mi_parse.ts.html @@ -0,0 +1,1036 @@ + + + + + + Code coverage report for src/backend/mi_parse.ts + + + + + + + + + +
+
+

All files / src/backend mi_parse.ts

+
+ +
+ 0% + Statements + 0/183 +
+ + +
+ 0% + Branches + 0/113 +
+ + +
+ 0% + Functions + 0/11 +
+ + +
+ 0% + Lines + 0/182 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
const OCTAL_ESCAPE_REGEX = /^[0-7]{3}/;
+ 
+export class MINode {
+    public token: number;
+    public outOfBandRecord: any[];
+    public resultRecords: any;
+ 
+    constructor(token: number, outOfBandRecord: any[], resultRecords: any) {
+        this.token = token;
+        this.outOfBandRecord = outOfBandRecord;
+        this.resultRecords = resultRecords;
+    }
+ 
+    static valueOf(startNode: any, path: string): any {
+        if (!startNode) {
+            return undefined;
+        }
+ 
+        const KEY_REGEX = /^\.?([a-zA-Z_\-][a-zA-Z0-9_\-]*)/;
+        const INDEX_REGEX = /^\[(\d+)\](?:$|\.)/;
+ 
+        path = path.trim();
+        if (!path) {
+            return startNode;
+        }
+ 
+        let current = startNode;
+ 
+        do {
+            let match = KEY_REGEX.exec(path);
+            if (match) {
+                path = path.substr(match[0].length);
+                if (!current.length || typeof current === 'string') {
+                    return undefined;
+                } else {
+                    const matches: any[] = [];
+                    for (const item of current) {
+                        if (item[0] === match[1]) {
+                            matches.push(item[1]);
+                        }
+                    }
+                    if (matches.length > 1) {
+                        current = matches;
+                    } else if (matches.length === 1) {
+                        current = matches[0];
+                    } else {
+                        return undefined;
+                    }
+                }
+            } else if (path[0] === '@') {
+                current = [current];
+                path = path.substr(1);
+            } else {
+                match = INDEX_REGEX.exec(path);
+                if (!match) {
+                    return undefined;
+                }
+                path = path.substr(match[0].length);
+                const index = parseInt(match[1]);
+                if (current.length && typeof current !== 'string' && index >= 0 && index < current.length) {
+                    current = current[index];
+                } else if (index !== 0) {
+                    return undefined;
+                }
+            }
+ 
+            path = path.trim();
+        } while (path);
+ 
+        return current;
+    }
+ 
+    record(path: string): any {
+        if (this.outOfBandRecord) {
+            return MINode.valueOf(this.outOfBandRecord[0].output, path);
+        }
+    }
+ 
+    result(path: string): any {
+        if (this.resultRecords) {
+            return MINode.valueOf(this.resultRecords.results, path);
+        }
+    }
+}
+ 
+const OUT_OF_BAND_REGEX = /^(?:(\d*|undefined)([\*\+\=])|([\~\@\&]))/;
+const RESULT_REGEX = /^(\d*)\^(done|running|connected|error|exit)/;
+const NEWLINE_REGEX = /^\r\n?/;
+const VARIABLE_NAME_REGEX = /^([a-zA-Z_\-][a-zA-Z0-9_\-]*)/;
+const ASYNC_CLASS_REGEX = /^(.*?),/;
+ 
+function parseString(input: string): [string, string] {
+    if (input[0] !== '"') {
+        return ['', input];
+    }
+ 
+    let pos = 1;
+    let scanning = true;
+    let str = input.substr(1);
+    let escaped = false;
+ 
+    while (scanning) {
+        if (escaped) {
+            escaped = false;
+        } else if (str[0] === '\\') {
+            escaped = true;
+        } else if (str[0] === '"') {
+            scanning = false;
+        }
+        str = str.substr(1);
+        pos++;
+    }
+ 
+    let result: string;
+    try {
+        result = parseCString(input.substr(0, pos));
+    } catch (e) {
+        result = input.substr(0, pos);
+    }
+ 
+    return [result, input.substr(pos)];
+}
+ 
+function parseCString(str: string): string {
+    const buffer = Buffer.alloc(str.length * 4);
+    let offset = 0;
+ 
+    if (str[0] !== '"' || str[str.length - 1] !== '"') {
+        throw new Error('Not a valid string');
+    }
+    str = str.slice(1, -1);
+ 
+    let escaped = false;
+    for (let i = 0; i < str.length; i++) {
+        if (escaped) {
+            let octalMatch;
+            if (str[i] === '\\') {
+                offset += buffer.write('\\', offset);
+            } else if (str[i] === '"') {
+                offset += buffer.write('"', offset);
+            } else if (str[i] === "'") {
+                offset += buffer.write("'", offset);
+            } else if (str[i] === 'n') {
+                offset += buffer.write('\n', offset);
+            } else if (str[i] === 'r') {
+                offset += buffer.write('\r', offset);
+            } else if (str[i] === 't') {
+                offset += buffer.write('\t', offset);
+            } else if (str[i] === 'b') {
+                offset += buffer.write('\b', offset);
+            } else if (str[i] === 'f') {
+                offset += buffer.write('\f', offset);
+            } else if (str[i] === 'v') {
+                offset += buffer.write('\v', offset);
+            } else if (str[i] === '0') {
+                offset += buffer.write('\0', offset);
+            } else if ((octalMatch = OCTAL_ESCAPE_REGEX.exec(str.substr(i)))) {
+                buffer.writeUInt8(parseInt(octalMatch[0], 8), offset++);
+                i += 2;
+            } else {
+                offset += buffer.write(str[i], offset);
+            }
+            escaped = false;
+        } else if (str[i] === '\\') {
+            escaped = true;
+        } else {
+            if (str[i] === '"') {
+                throw new Error('Not a valid string');
+            }
+            offset += buffer.write(str[i], offset);
+        }
+    }
+ 
+    return buffer.slice(0, offset).toString('utf8');
+}
+ 
+export function parseMI(output: string): MINode {
+    let token: number;
+    const outOfBandRecords: any[] = [];
+    let resultRecords: any;
+ 
+    const asyncClassMap: { [key: string]: string } = {
+        '*': 'exec',
+        '+': 'status',
+        '=': 'notify',
+    };
+ 
+    const streamClassMap: { [key: string]: string } = {
+        '~': 'console',
+        '@': 'target',
+        '&': 'log',
+    };
+ 
+    let parseValue: () => any;
+    let parseResult: () => any;
+    let parseCommaValue: () => any;
+    let parseCommaResult: () => any;
+ 
+    parseValue = (): any => {
+        if (output[0] === '"') {
+            const [str, rest] = parseString(output);
+            output = rest;
+            return str;
+        } else if (output[0] === '{' || output[0] === '[') {
+            const isList = output[0] === '[';
+            output = output.substr(1);
+            if (output[0] === '}' || output[0] === ']') {
+                output = output.substr(1);
+                return [];
+            }
+ 
+            if (isList) {
+                let val = parseValue();
+                if (val) {
+                    const arr: any[] = [];
+                    arr.push(val);
+                    while ((val = parseCommaValue()) !== undefined) {
+                        arr.push(val);
+                    }
+                    output = output.substr(1);
+                    return arr;
+                }
+            }
+ 
+            let result = parseResult();
+            if (result) {
+                const arr: any[] = [];
+                arr.push(result);
+                while ((result = parseCommaResult())) {
+                    arr.push(result);
+                }
+                output = output.substr(1);
+                return arr;
+            }
+ 
+            output = (isList ? '[' : '{') + output;
+        }
+        return undefined;
+    };
+ 
+    parseResult = (): any => {
+        const match = VARIABLE_NAME_REGEX.exec(output);
+        if (match) {
+            output = output.substr(match[0].length + 1); // +1 for '='
+            return [match[1], parseValue()];
+        }
+    };
+ 
+    parseCommaValue = (): any => {
+        if (output[0] === ',') {
+            output = output.substr(1);
+            return parseValue();
+        }
+    };
+ 
+    parseCommaResult = (): any => {
+        if (output[0] === ',') {
+            output = output.substr(1);
+            return parseResult();
+        }
+    };
+ 
+    let match: RegExpExecArray;
+ 
+    while ((match = OUT_OF_BAND_REGEX.exec(output))) {
+        output = output.substr(match[0].length);
+ 
+        if (match[1] && token === undefined && match[1] !== 'undefined') {
+            token = parseInt(match[1]);
+        }
+ 
+        if (match[2]) {
+            const classMatch = ASYNC_CLASS_REGEX.exec(output);
+            output = output.substr(classMatch[1].length);
+            const record: any = {
+                isStream: false,
+                type: asyncClassMap[match[2]],
+                asyncClass: classMatch[1],
+                output: [],
+            };
+            let res;
+            while ((res = parseCommaResult())) {
+                record.output.push(res);
+            }
+            outOfBandRecords.push(record);
+        } else if (match[3]) {
+            const [content, rest] = parseString(output);
+            output = rest;
+            const record: any = {
+                isStream: true,
+                type: streamClassMap[match[3]],
+                content,
+            };
+            outOfBandRecords.push(record);
+        }
+ 
+        output = output.replace(NEWLINE_REGEX, '');
+    }
+ 
+    if ((match = RESULT_REGEX.exec(output))) {
+        output = output.substr(match[0].length);
+        if (match[1] && token === undefined) {
+            token = parseInt(match[1]);
+        }
+        resultRecords = {
+            resultClass: match[2],
+            results: [],
+        };
+        let res;
+        while ((res = parseCommaResult())) {
+            resultRecords.results.push(res);
+        }
+        output = output.replace(NEWLINE_REGEX, '');
+    }
+ 
+    return new MINode(token, outOfBandRecords || [], resultRecords);
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/backend/symbols.ts.html b/coverage/lcov-report/src/backend/symbols.ts.html new file mode 100644 index 0000000..7b1fe76 --- /dev/null +++ b/coverage/lcov-report/src/backend/symbols.ts.html @@ -0,0 +1,586 @@ + + + + + + Code coverage report for src/backend/symbols.ts + + + + + + + + + +
+
+

All files / src/backend symbols.ts

+
+ +
+ 0% + Statements + 0/63 +
+ + +
+ 0% + Branches + 0/47 +
+ + +
+ 0% + Functions + 0/14 +
+ + +
+ 0% + Lines + 0/62 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as childProcess from 'child_process';
+import * as fs from 'fs';
+import * as path from 'path';
+import { SymbolType, SymbolScope } from '../common';
+ 
+const SYMBOL_REGEX = /^([0-9a-f]{8})\s([lg\ !])([w\ ])([C\ ])([W\ ])([I\ ])([dD\ ])([FfO\ ])\s([^\s]+)\s([0-9a-f]+)\s(.*)\r?$/;
+const DEMANGLED_NAME_REGEX = /^_Z[^\d]*(\d+)(.+)$/;
+ 
+const TYPE_MAP: { [key: string]: SymbolType } = {
+    'F': SymbolType.Function,
+    'f': SymbolType.File,
+    'O': SymbolType.Object,
+    ' ': SymbolType.Normal,
+};
+ 
+const SCOPE_MAP: { [key: string]: SymbolScope } = {
+    'l': SymbolScope.Local,
+    'g': SymbolScope.Global,
+    ' ': SymbolScope.Neither,
+    '!': SymbolScope.Both,
+};
+ 
+export interface SymbolInformation {
+    address: number;
+    type: SymbolType;
+    scope: SymbolScope;
+    section: string;
+    length: number;
+    name: string;
+    file: string | null;
+    instructions: any[] | null;
+    hidden: boolean;
+}
+ 
+export class SymbolTable {
+    private symbols: SymbolInformation[] = [];
+ 
+    constructor(
+        private toolchainBinDir: string,
+        private executable: string
+    ) {}
+ 
+    loadSymbols(): void {
+        let objdumpPath = '';
+        fs.readdirSync(this.toolchainBinDir).forEach((file) => {
+            if (file.includes('objdump') && fs.existsSync(path.join(this.toolchainBinDir, file))) {
+                objdumpPath = path.join(this.toolchainBinDir, file);
+            }
+        });
+ 
+        if (!objdumpPath) {
+            throw new Error('Could not find "objdump" program');
+        }
+ 
+        const lines = childProcess
+            .spawnSync(objdumpPath, ['--syms', this.executable])
+            .stdout.toString()
+            .split('\n');
+ 
+        let currentFile: string | null = null;
+ 
+        for (const line of lines) {
+            const match = line.match(SYMBOL_REGEX);
+            if (!match) {
+                continue;
+            }
+ 
+            const type = TYPE_MAP[match[8]];
+            const scope = SCOPE_MAP[match[2]];
+            let name = match[11].trim();
+            let hidden = false;
+ 
+            if (match[7] === 'd' && match[8] === 'f') {
+                currentFile = name;
+            } else {
+                if (name.startsWith('.hidden')) {
+                    name = name.substring(7).trim();
+                    hidden = true;
+                }
+ 
+                const demangledMatch = name.match(DEMANGLED_NAME_REGEX);
+                if (demangledMatch) {
+                    if (type !== SymbolType.Function) {
+                        continue;
+                    }
+                    const nameLength = parseInt(demangledMatch[1]);
+                    name = demangledMatch[2].substr(0, nameLength);
+ 
+                    if (demangledMatch[2].length > nameLength) {
+                        const nestedMatch = demangledMatch[2].substr(nameLength).match(/^(\d+)(.+)$/);
+                        if (nestedMatch) {
+                            name += '::' + nestedMatch[2].substr(0, parseInt(nestedMatch[1]));
+                        }
+                    }
+                }
+ 
+                this.symbols.push({
+                    address: parseInt(match[1], 16),
+                    type,
+                    scope,
+                    section: match[9].trim(),
+                    length: parseInt(match[10], 16),
+                    name,
+                    file: scope === SymbolScope.Local ? currentFile : null,
+                    instructions: null,
+                    hidden,
+                });
+            }
+        }
+    }
+ 
+    getFunctionAtAddress(address: number): SymbolInformation | undefined {
+        const matches = this.symbols.filter(
+            (sym) =>
+                sym.type === SymbolType.Function &&
+                sym.address <= address &&
+                sym.address + sym.length > address
+        );
+        if (matches && matches.length !== 0) {
+            return matches[0];
+        }
+    }
+ 
+    getFunctionSymbols(): SymbolInformation[] {
+        return this.symbols.filter((sym) => sym.type === SymbolType.Function);
+    }
+ 
+    getGlobalVariables(): SymbolInformation[] {
+        return this.symbols.filter(
+            (sym) => sym.type === SymbolType.Object && sym.scope === SymbolScope.Global
+        );
+    }
+ 
+    getStaticVariables(file: string): SymbolInformation[] {
+        return this.symbols.filter(
+            (sym) =>
+                sym.type === SymbolType.Object &&
+                sym.scope === SymbolScope.Local &&
+                sym.file === file
+        );
+    }
+ 
+    getFunctionByName(name: string, file: string): SymbolInformation | null {
+        let matches = this.symbols.filter(
+            (sym) =>
+                sym.type === SymbolType.Function &&
+                sym.scope === SymbolScope.Local &&
+                sym.name === name &&
+                sym.file === file
+        );
+        if (matches.length !== 0) {
+            return matches[0];
+        }
+ 
+        matches = this.symbols.filter(
+            (sym) =>
+                sym.type === SymbolType.Function &&
+                sym.scope !== SymbolScope.Local &&
+                sym.name === name
+        );
+        if (matches.length !== 0) {
+            return matches[0];
+        }
+ 
+        return null;
+    }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/common.ts.html b/coverage/lcov-report/src/common.ts.html new file mode 100644 index 0000000..8dce1c5 --- /dev/null +++ b/coverage/lcov-report/src/common.ts.html @@ -0,0 +1,205 @@ + + + + + + Code coverage report for src/common.ts + + + + + + + + + +
+
+

All files / src common.ts

+
+ +
+ 0% + Statements + 0/22 +
+ + +
+ 0% + Branches + 0/7 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 0% + Lines + 0/22 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Event } from '@vscode/debugadapter';
+ 
+export enum NumberFormat {
+    Auto = 0,
+    Hexidecimal = 1,
+    Decimal = 2,
+    Binary = 3,
+}
+ 
+export class AdapterOutputEvent extends Event {
+    constructor(content: string, type: string) {
+        super('adapter-output', { content, type });
+    }
+}
+ 
+export class StoppedEvent extends Event {
+    constructor(reason: string, threadId: number, allThreadsStopped: boolean) {
+        super('stopped', { reason, threadId, allThreadsStopped });
+    }
+}
+ 
+export class TelemetryEvent extends Event {
+    constructor(category: string, action: string, label: string, parameters: any = {}) {
+        super('record-event', { category, action, label, parameters });
+    }
+}
+ 
+export enum SymbolType {
+    Function = 0,
+    File = 1,
+    Object = 2,
+    Normal = 3,
+}
+ 
+export enum SymbolScope {
+    Local = 0,
+    Global = 1,
+    Neither = 2,
+    Both = 3,
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/extension.ts.html b/coverage/lcov-report/src/extension.ts.html new file mode 100644 index 0000000..5c098a0 --- /dev/null +++ b/coverage/lcov-report/src/extension.ts.html @@ -0,0 +1,1375 @@ + + + + + + Code coverage report for src/extension.ts + + + + + + + + + +
+
+

All files / src extension.ts

+
+ +
+ 0% + Statements + 0/149 +
+ + +
+ 0% + Branches + 0/68 +
+ + +
+ 0% + Functions + 0/46 +
+ + +
+ 0% + Lines + 0/148 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as vscode from 'vscode';
+import { NumberFormat, SymbolScope } from './common';
+import { encodeDisassembly } from './utils';
+import { PlatformIODebugConfigurationProvider } from './frontend/configprovider';
+import { DisassemblyContentProvider } from './frontend/disassembly_content_provider';
+import { DisassemblyTreeProvider } from './frontend/disassembly_tree_provider';
+import { MemoryContentProvider } from './frontend/memory_content_provider';
+import { MemoryTreeProvider } from './frontend/memory_tree_provider';
+import { PeripheralTreeProvider, RecordType as PeripheralRecordType } from './frontend/peripheral';
+import { RegisterTreeProvider, RecordType as RegisterRecordType } from './frontend/registers';
+ 
+class PlatformIODebugExtension {
+    private adapterOutputChannel: vscode.OutputChannel = null;
+    private functionSymbols: any[] = null;
+    private context: vscode.ExtensionContext;
+    private registerProvider: RegisterTreeProvider;
+    private peripheralProvider: PeripheralTreeProvider;
+    private memoryTreeProvider: MemoryTreeProvider;
+    private disassemblyTreeProvider: DisassemblyTreeProvider;
+    private memoryContentProvider: MemoryContentProvider;
+ 
+    constructor(context: vscode.ExtensionContext) {
+        this.context = context;
+        this.registerProvider = new RegisterTreeProvider();
+        this.peripheralProvider = new PeripheralTreeProvider();
+        this.memoryTreeProvider = new MemoryTreeProvider();
+        this.disassemblyTreeProvider = new DisassemblyTreeProvider();
+        this.memoryContentProvider = new MemoryContentProvider();
+ 
+        const peripheralTreeView = vscode.window.createTreeView('platformio-debug.peripherals', {
+            treeDataProvider: this.peripheralProvider,
+        });
+ 
+        context.subscriptions.push(
+            vscode.debug.registerDebugConfigurationProvider(
+                'platformio-debug',
+                new PlatformIODebugConfigurationProvider()
+            ),
+            peripheralTreeView,
+            peripheralTreeView.onDidExpandElement(
+                this.peripheralProvider.onDidExpandElement.bind(this.peripheralProvider)
+            ),
+            peripheralTreeView.onDidCollapseElement(
+                this.peripheralProvider.onDidCollapseElement.bind(this.peripheralProvider)
+            ),
+            vscode.window.registerTreeDataProvider('platformio-debug.registers', this.registerProvider),
+            vscode.window.registerTreeDataProvider('platformio-debug.memory', this.memoryTreeProvider),
+            vscode.window.registerTreeDataProvider('platformio-debug.disassembly', this.disassemblyTreeProvider),
+            vscode.workspace.registerTextDocumentContentProvider('examinememory', this.memoryContentProvider),
+            vscode.workspace.registerTextDocumentContentProvider('disassembly', new DisassemblyContentProvider()),
+ 
+            vscode.commands.registerCommand('platformio-debug.peripherals.updateNode', this.peripheralsUpdateNode.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.peripherals.selectedNode', this.peripheralsSelectedNode.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.peripherals.copyValue', this.peripheralsCopyValue.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.peripherals.setFormat', this.peripheralsSetFormat.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.registers.selectedNode', this.registersSelectedNode.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.registers.copyValue', this.registersCopyValue.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.registers.setFormat', this.registersSetFormat.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.memory.deleteHistoryItem', this.memoryDeleteHistoryItem.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.memory.clearHistory', this.memoryClearHistory.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.examineMemory', this.examineMemory.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.viewDisassembly', this.showDisassembly.bind(this)),
+            vscode.commands.registerCommand('platformio-debug.setForceDisassembly', this.setForceDisassembly.bind(this)),
+ 
+            vscode.debug.onDidReceiveDebugSessionCustomEvent(this.receivedCustomEvent.bind(this)),
+            vscode.debug.onDidStartDebugSession(this.debugSessionStarted.bind(this)),
+            vscode.debug.onDidTerminateDebugSession(this.debugSessionTerminated.bind(this)),
+            vscode.window.onDidChangeActiveTextEditor(this.activeEditorChanged.bind(this)),
+            vscode.window.onDidChangeTextEditorSelection((e) => {
+                if (e && e.textEditor.document.fileName.endsWith('.dbgmem')) {
+                    this.memoryContentProvider.handleSelection(e);
+                }
+            })
+        );
+    }
+ 
+    private isPIODebugSession(): boolean {
+        return vscode.debug.activeDebugSession && vscode.debug.activeDebugSession.type === 'platformio-debug';
+    }
+ 
+    private activeEditorChanged(editor: vscode.TextEditor): void {
+        if (!editor || !this.isPIODebugSession()) {
+            return;
+        }
+ 
+        const uri = editor.document.uri;
+        if (uri.scheme === 'file') {
+            vscode.debug.activeDebugSession.customRequest('set-active-editor', { path: uri.path });
+        } else if (uri.scheme === 'disassembly') {
+            vscode.debug.activeDebugSession.customRequest('set-active-editor', {
+                path: `${uri.scheme}://${uri.authority}${uri.path}`,
+            });
+        }
+    }
+ 
+    private async showDisassembly(): Promise<void> {
+        if (!this.isPIODebugSession()) {
+            vscode.window.showErrorMessage('No debugging session available');
+            return;
+        }
+ 
+        if (!this.functionSymbols) {
+            try {
+                const result = await vscode.debug.activeDebugSession.customRequest('load-function-symbols');
+                this.functionSymbols = result.functionSymbols;
+            } catch (e) {
+                vscode.window.showErrorMessage('Unable to load symbol table. Disassembly view unavailable.');
+            }
+        }
+ 
+        try {
+            const funcName = await vscode.window.showInputBox({
+                placeHolder: 'main',
+                ignoreFocusOut: true,
+                prompt: 'Function Name to Disassemble',
+            });
+ 
+            const matches = this.functionSymbols.filter((s) => s.name === funcName);
+            let uri: string;
+ 
+            if (matches.length === 1) {
+                uri = encodeDisassembly(matches[0].name, matches[0].file);
+            } else if (matches.length > 1) {
+                const selected = await vscode.window.showQuickPick(
+                    matches.map((m) => ({
+                        label: m.name,
+                        name: m.name,
+                        file: m.file,
+                        scope: m.scope,
+                        description:
+                            m.scope === SymbolScope.Global ? 'Global Scope' : `Static in ${m.file}`,
+                    })),
+                    { ignoreFocusOut: true }
+                );
+                uri = encodeDisassembly(selected.name, selected.file);
+            } else {
+                vscode.window.showErrorMessage(`No function with name ${funcName} found.`);
+                return;
+            }
+ 
+            if (uri) {
+                vscode.window.showTextDocument(vscode.Uri.parse(uri));
+            }
+        } catch (e) {
+            vscode.window.showErrorMessage('Unable to show disassembly.');
+        }
+    }
+ 
+    private setForceDisassembly(force?: string): void {
+        const doSet = (value: string) => {
+            const forced = value === 'Forced';
+            this.disassemblyTreeProvider.updateForcedState(forced);
+            return vscode.debug.activeDebugSession.customRequest('set-force-disassembly', { force: forced });
+        };
+ 
+        if (force) {
+            return doSet(force) as any;
+        }
+ 
+        vscode.window
+            .showQuickPick(
+                [
+                    {
+                        label: 'Auto',
+                        description: 'Show disassembly for functions when source cannot be located.',
+                    },
+                    {
+                        label: 'Forced',
+                        description: 'Always show disassembly for functions.',
+                    },
+                ],
+                { matchOnDescription: true, ignoreFocusOut: true }
+            )
+            .then(
+                (selected) => {
+                    doSet(selected.label);
+                },
+                (err) => {}
+            );
+    }
+ 
+    private memoryDeleteHistoryItem(item: any): void {
+        const [address, length] = item.label.split('+');
+        this.memoryTreeProvider.deleteHistory(address, length);
+    }
+ 
+    private memoryClearHistory(): void {
+        this.memoryTreeProvider.clearHistory();
+    }
+ 
+    private examineMemory(address?: string, length?: string): any {
+        function validateInput(input: string): string | null {
+            if (/^0x[0-9a-f]{1,8}$/i.test(input) || /^[0-9]+$/i.test(input)) {
+                return input;
+            }
+            return null;
+        }
+ 
+        if (!this.isPIODebugSession()) {
+            vscode.window.showErrorMessage('No debugging session available');
+            return;
+        }
+ 
+        if (address && length) {
+            return this.showMemoryContent(address, length);
+        }
+ 
+        vscode.window
+            .showInputBox({
+                placeHolder: 'Prefix with 0x for hexidecimal format',
+                ignoreFocusOut: true,
+                prompt: 'A start memory address',
+            })
+            .then(
+                (addressInput) => {
+                    if (validateInput(addressInput)) {
+                        vscode.window
+                            .showInputBox({
+                                placeHolder: 'Prefix with 0x for hexidecimal format',
+                                ignoreFocusOut: true,
+                                prompt: 'How many bytes to read?',
+                            })
+                            .then(
+                                (lengthInput) => {
+                                    if (validateInput(lengthInput)) {
+                                        this.memoryTreeProvider.pushHistory(addressInput, lengthInput);
+                                        this.showMemoryContent(addressInput, lengthInput);
+                                    } else {
+                                        vscode.window.showErrorMessage('Invalid length entered');
+                                    }
+                                },
+                                (err) => {}
+                            );
+                    } else {
+                        vscode.window.showErrorMessage('Invalid memory address entered');
+                    }
+                },
+                (err) => {}
+            );
+    }
+ 
+    private showMemoryContent(address: string, length: string): void {
+        vscode.workspace
+            .openTextDocument(
+                vscode.Uri.parse(
+                    `examinememory:///Memory%20[${address}+${length}].dbgmem?address=${address}&length=${length}&timestamp=${new Date().getTime()}`
+                )
+            )
+            .then(
+                (doc) => {
+                    vscode.window.showTextDocument(doc, { viewColumn: 2, preview: false });
+                },
+                (error) => {
+                    vscode.window.showErrorMessage(`Failed to examine memory: ${error}`);
+                }
+            );
+    }
+ 
+    private peripheralsUpdateNode(node: any): void {
+        node.node.performUpdate().then(
+            (result: boolean) => {
+                if (result) {
+                    this.peripheralProvider.refresh();
+                }
+            },
+            (error: any) => {
+                vscode.window.showErrorMessage(`Unable to update value: ${error.toString()}`);
+            }
+        );
+    }
+ 
+    private peripheralsSelectedNode(node: any): void {
+        if (node.recordType !== PeripheralRecordType.Field) {
+            node.expanded = !node.expanded;
+        }
+        node.selected().then(
+            (result: boolean) => {
+                if (result) {
+                    this.peripheralProvider.refresh();
+                }
+            },
+            (error: any) => {}
+        );
+    }
+ 
+    private peripheralsCopyValue(node: any): void {
+        const value = node.node.getCopyValue();
+        if (value) {
+            vscode.env.clipboard.writeText(value);
+        }
+    }
+ 
+    private async peripheralsSetFormat(node: any): Promise<void> {
+        const selected = await vscode.window.showQuickPick([
+            { label: 'Auto', description: 'Automatically choose format (Inherits from parent)', value: NumberFormat.Auto },
+            { label: 'Hex', description: 'Format value in hexidecimal', value: NumberFormat.Hexidecimal },
+            { label: 'Decimal', description: 'Format value in decimal', value: NumberFormat.Decimal },
+            { label: 'Binary', description: 'Format value in binary', value: NumberFormat.Binary },
+        ]);
+        node.node.setFormat(selected.value);
+        this.peripheralProvider.refresh();
+    }
+ 
+    private registersSelectedNode(node: any): void {
+        if (node.recordType !== RegisterRecordType.Field) {
+            node.expanded = !node.expanded;
+        }
+    }
+ 
+    private registersCopyValue(node: any): void {
+        const value = node.node.getCopyValue();
+        if (value) {
+            vscode.env.clipboard.writeText(value);
+        }
+    }
+ 
+    private async registersSetFormat(node: any): Promise<void> {
+        const selected = await vscode.window.showQuickPick([
+            { label: 'Auto', description: 'Automatically choose format (Inherits from parent)', value: NumberFormat.Auto },
+            { label: 'Hex', description: 'Format value in hexidecimal', value: NumberFormat.Hexidecimal },
+            { label: 'Decimal', description: 'Format value in decimal', value: NumberFormat.Decimal },
+            { label: 'Binary', description: 'Format value in binary', value: NumberFormat.Binary },
+        ]);
+        node.node.setFormat(selected.value);
+        this.registerProvider.refresh();
+    }
+ 
+    private debugSessionStarted(session: vscode.DebugSession): void {
+        if (session.type === 'platformio-debug') {
+            this.functionSymbols = null;
+            session.customRequest('get-arguments').then(
+                (args: any) => {
+                    this.registerProvider.debugSessionStarted(
+                        this.context.workspaceState.get('debugRegistersTreeState')
+                    );
+                    this.peripheralProvider.debugSessionStarted(
+                        args.svdPath,
+                        this.context.workspaceState.get('debugPeripheralsTreeState')
+                    );
+                    this.memoryTreeProvider.debugSessionStarted(
+                        this.context.workspaceState.get('debugMemoryTreeState')
+                    );
+                    this.disassemblyTreeProvider.debugSessionStarted();
+                },
+                (error: any) => {
+                    console.error(error);
+                }
+            );
+        }
+    }
+ 
+    private debugSessionTerminated(session: vscode.DebugSession): void {
+        if (session.type === 'platformio-debug') {
+            this.context.workspaceState.update(
+                'debugRegistersTreeState',
+                this.registerProvider.dumpSettings()
+            );
+            this.context.workspaceState.update(
+                'debugPeripheralsTreeState',
+                this.peripheralProvider.dumpSettings()
+            );
+            this.context.workspaceState.update(
+                'debugMemoryTreeState',
+                this.memoryTreeProvider.dumpSettings()
+            );
+ 
+            this.registerProvider.debugSessionTerminated();
+            this.peripheralProvider.debugSessionTerminated();
+            this.memoryTreeProvider.debugSessionTerminated();
+            this.disassemblyTreeProvider.debugSessionTerminated();
+        }
+    }
+ 
+    private receivedCustomEvent(e: vscode.DebugSessionCustomEvent): void {
+        if (!this.isPIODebugSession()) {
+            return;
+        }
+ 
+        switch (e.event) {
+            case 'custom-stop':
+                this.receivedStopEvent(e);
+                break;
+            case 'custom-continued':
+                this.receivedContinuedEvent(e);
+                break;
+            case 'adapter-output':
+                this.receivedAdapterOutput(e);
+                break;
+            case 'record-event':
+                this.receivedEvent(e);
+                break;
+        }
+    }
+ 
+    private receivedStopEvent(e: vscode.DebugSessionCustomEvent): void {
+        this.peripheralProvider.debugStopped();
+        this.registerProvider.debugStopped();
+ 
+        vscode.workspace.textDocuments
+            .filter((doc) => doc.fileName.endsWith('.dbgmem'))
+            .forEach((doc) => {
+                this.memoryContentProvider.update(doc);
+            });
+    }
+ 
+    private receivedContinuedEvent(e: vscode.DebugSessionCustomEvent): void {
+        this.peripheralProvider.debugContinued();
+        this.registerProvider.debugContinued();
+    }
+ 
+    private receivedEvent(e: vscode.DebugSessionCustomEvent): void {}
+ 
+    private receivedAdapterOutput(e: vscode.DebugSessionCustomEvent): void {
+        if (!this.adapterOutputChannel) {
+            this.adapterOutputChannel = vscode.window.createOutputChannel('Adapter Output');
+        }
+ 
+        let content: string = e.body.content;
+        if (!content.endsWith('\n')) {
+            content += '\n';
+        }
+        this.adapterOutputChannel.append(content);
+    }
+}
+ 
+export function activate(context: vscode.ExtensionContext): PlatformIODebugExtension {
+    return new PlatformIODebugExtension(context);
+}
+ 
+export function deactivate(): void {}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/frontend/configprovider.ts.html b/coverage/lcov-report/src/frontend/configprovider.ts.html new file mode 100644 index 0000000..819eb75 --- /dev/null +++ b/coverage/lcov-report/src/frontend/configprovider.ts.html @@ -0,0 +1,127 @@ + + + + + + Code coverage report for src/frontend/configprovider.ts + + + + + + + + + +
+
+

All files / src/frontend configprovider.ts

+
+ +
+ 0% + Statements + 0/4 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 0% + Functions + 0/2 +
+ + +
+ 0% + Lines + 0/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as vscode from 'vscode';
+ 
+export class PlatformIODebugConfigurationProvider implements vscode.DebugConfigurationProvider {
+    constructor() {}
+ 
+    async resolveDebugConfiguration(
+        folder: vscode.WorkspaceFolder | undefined,
+        config: vscode.DebugConfiguration,
+        token?: vscode.CancellationToken
+    ): Promise<vscode.DebugConfiguration> {
+        (config as any).cwd = folder ? folder.uri.fsPath : vscode.workspace.rootPath;
+        return config;
+    }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/frontend/disassembly_content_provider.ts.html b/coverage/lcov-report/src/frontend/disassembly_content_provider.ts.html new file mode 100644 index 0000000..4643209 --- /dev/null +++ b/coverage/lcov-report/src/frontend/disassembly_content_provider.ts.html @@ -0,0 +1,184 @@ + + + + + + Code coverage report for src/frontend/disassembly_content_provider.ts + + + + + + + + + +
+
+

All files / src/frontend disassembly_content_provider.ts

+
+ +
+ 0% + Statements + 0/17 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 0% + Lines + 0/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as vscode from 'vscode';
+import { parseQuery } from '../utils';
+ 
+export class DisassemblyContentProvider implements vscode.TextDocumentContentProvider {
+    provideTextDocumentContent(uri: vscode.Uri, token: vscode.CancellationToken): Thenable<string> {
+        return new Promise((resolve, reject) => {
+            const params = parseQuery(uri.query);
+            vscode.debug.activeDebugSession
+                .customRequest('disassemble', { function: params.func, file: params.file })
+                .then(
+                    (result: any) => {
+                        const instructions = result.instructions;
+                        let output = '';
+                        instructions.forEach((instruction: any) => {
+                            output += `${instruction.address}: ${this.padEnd(15, instruction.opcodes)} \t${instruction.instruction}\n`;
+                        });
+                        resolve(output);
+                    },
+                    (error: any) => {
+                        vscode.window.showErrorMessage(error.message);
+                        reject(error.message);
+                    }
+                );
+        });
+    }
+ 
+    private padEnd(targetLength: number, str: string): string {
+        for (let i = str.length; i < targetLength; i++) {
+            str += ' ';
+        }
+        return str;
+    }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/frontend/disassembly_tree_provider.ts.html b/coverage/lcov-report/src/frontend/disassembly_tree_provider.ts.html new file mode 100644 index 0000000..7c9b47e --- /dev/null +++ b/coverage/lcov-report/src/frontend/disassembly_tree_provider.ts.html @@ -0,0 +1,235 @@ + + + + + + Code coverage report for src/frontend/disassembly_tree_provider.ts + + + + + + + + + +
+
+

All files / src/frontend disassembly_tree_provider.ts

+
+ +
+ 0% + Statements + 0/19 +
+ + +
+ 0% + Branches + 0/6 +
+ + +
+ 0% + Functions + 0/7 +
+ + +
+ 0% + Lines + 0/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as vscode from 'vscode';
+ 
+export class DisassemblyTreeProvider implements vscode.TreeDataProvider<vscode.TreeItem> {
+    private _onDidChangeTreeData = new vscode.EventEmitter<void>();
+    public onDidChangeTreeData = this._onDidChangeTreeData.event;
+    private forced: boolean = false;
+ 
+    refresh(): void {
+        this._onDidChangeTreeData.fire();
+    }
+ 
+    getChildren(element?: vscode.TreeItem): vscode.TreeItem[] {
+        if (!vscode.debug.activeDebugSession) {
+            return [];
+        }
+ 
+        const disassembleItem = new vscode.TreeItem('Disassemble function');
+        disassembleItem.command = {
+            title: 'Disassemble function',
+            command: 'platformio-debug.viewDisassembly',
+        };
+ 
+        const switchLabel = 'Switch to ' + (this.forced ? 'code' : 'assembly');
+        const switchItem = new vscode.TreeItem(switchLabel);
+        switchItem.command = {
+            title: switchLabel,
+            command: 'platformio-debug.setForceDisassembly',
+            arguments: [this.forced ? 'Auto' : 'Forced'],
+        };
+ 
+        return [disassembleItem, switchItem];
+    }
+ 
+    getTreeItem(element: vscode.TreeItem): vscode.TreeItem {
+        return element;
+    }
+ 
+    updateForcedState(forced: boolean): void {
+        this.forced = forced;
+        this.refresh();
+    }
+ 
+    debugSessionStarted(): void {
+        this.refresh();
+    }
+ 
+    debugSessionTerminated(): void {
+        this.updateForcedState(false);
+    }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/frontend/index.html b/coverage/lcov-report/src/frontend/index.html new file mode 100644 index 0000000..78567bc --- /dev/null +++ b/coverage/lcov-report/src/frontend/index.html @@ -0,0 +1,206 @@ + + + + + + Code coverage report for src/frontend + + + + + + + + + +
+
+

All files src/frontend

+
+ +
+ 0% + Statements + 0/897 +
+ + +
+ 0% + Branches + 0/446 +
+ + +
+ 0% + Functions + 0/212 +
+ + +
+ 0% + Lines + 0/856 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
configprovider.ts +
+
0%0/40%0/20%0/20%0/4
disassembly_content_provider.ts +
+
0%0/17100%0/00%0/60%0/16
disassembly_tree_provider.ts +
+
0%0/190%0/60%0/70%0/19
memory_content_provider.ts +
+
0%0/860%0/460%0/100%0/82
memory_tree_provider.ts +
+
0%0/340%0/100%0/130%0/33
peripheral.ts +
+
0%0/5710%0/3060%0/1260%0/543
registers.ts +
+
0%0/1660%0/760%0/480%0/159
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/frontend/memory_content_provider.ts.html b/coverage/lcov-report/src/frontend/memory_content_provider.ts.html new file mode 100644 index 0000000..dad0c59 --- /dev/null +++ b/coverage/lcov-report/src/frontend/memory_content_provider.ts.html @@ -0,0 +1,559 @@ + + + + + + Code coverage report for src/frontend/memory_content_provider.ts + + + + + + + + + +
+
+

All files / src/frontend memory_content_provider.ts

+
+ +
+ 0% + Statements + 0/86 +
+ + +
+ 0% + Branches + 0/46 +
+ + +
+ 0% + Functions + 0/10 +
+ + +
+ 0% + Lines + 0/82 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as vscode from 'vscode';
+import { hexFormat, parseQuery } from '../utils';
+ 
+export class MemoryContentProvider implements vscode.TextDocumentContentProvider {
+    private _onDidChange = new vscode.EventEmitter<vscode.Uri>();
+    public onDidChange = this._onDidChange.event;
+ 
+    private firstBytePos = 10;
+    private lastBytePos = this.firstBytePos + 48 - 1;
+    private firstAsciiPos = this.lastBytePos + 3;
+    private lastAsciiPos = this.firstAsciiPos + 16;
+ 
+    private smallDecorationType = vscode.window.createTextEditorDecorationType({
+        borderWidth: '1px',
+        borderStyle: 'solid',
+        overviewRulerColor: 'blue',
+        overviewRulerLane: vscode.OverviewRulerLane.Right,
+        light: { borderColor: 'darkblue' },
+        dark: { borderColor: 'lightblue' },
+    });
+ 
+    provideTextDocumentContent(uri: vscode.Uri): Thenable<string> {
+        return new Promise((resolve, reject) => {
+            const params = parseQuery(uri.query);
+            const address = params.address.startsWith('0x')
+                ? parseInt(params.address.substring(2), 16)
+                : parseInt(params.address, 10);
+            const length = params.length.startsWith('0x')
+                ? parseInt(params.length.substring(2), 16)
+                : parseInt(params.length, 10);
+ 
+            vscode.debug.activeDebugSession
+                .customRequest('read-memory', { address, length: length || 32 })
+                .then(
+                    (result: any) => {
+                        const bytes: number[] = result.bytes;
+                        let rowAddress = address - (address % 16);
+                        const offset = address - rowAddress;
+                        let output = '';
+ 
+                        output += '  Offset: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F \t\n';
+                        output += hexFormat(rowAddress, 8, false) + ': ';
+ 
+                        let asciiStr = '';
+                        for (let i = 0; i < offset; i++) {
+                            output += '   ';
+                            asciiStr += ' ';
+                        }
+ 
+                        for (let i = 0; i < length; i++) {
+                            const byte = bytes[i];
+                            output += hexFormat(byte, 2, false).toUpperCase() + ' ';
+                            asciiStr +=
+                                byte <= 32 || (byte >= 127 && byte <= 159)
+                                    ? '.'
+                                    : String.fromCharCode(bytes[i]);
+ 
+                            if ((address + i) % 16 === 15 && i < length - 1) {
+                                output += '  ' + asciiStr;
+                                asciiStr = '';
+                                output += '\n';
+                                rowAddress += 16;
+                                output += hexFormat(rowAddress, 8, false) + ': ';
+                            }
+                        }
+ 
+                        const remaining = (16 - ((address + length) % 16)) % 16;
+                        for (let i = 0; i < remaining; i++) {
+                            output += '   ';
+                        }
+                        output += '  ' + asciiStr;
+                        output += '\n';
+ 
+                        resolve(output);
+                    },
+                    (error: any) => {
+                        vscode.window.showErrorMessage(
+                            `Unable to read memory from ${hexFormat(address, 8)} to ${hexFormat(address + length, 8)}`
+                        );
+                        reject(error.toString());
+                    }
+                );
+        });
+    }
+ 
+    update(document: vscode.TextDocument): void {
+        this._onDidChange.fire(document.uri);
+    }
+ 
+    getOffset(position: vscode.Position): number | undefined {
+        if (position.line < 1 || position.character < this.firstBytePos) {
+            return;
+        }
+ 
+        let offset = 16 * (position.line - 1);
+        const charOffset = position.character - this.firstBytePos;
+ 
+        if (position.character >= this.firstBytePos && position.character <= this.lastBytePos) {
+            offset += Math.floor(charOffset / 3);
+        } else if (position.character >= this.firstAsciiPos) {
+            offset += position.character - this.firstAsciiPos;
+        }
+ 
+        return offset;
+    }
+ 
+    getPosition(offset: number, isAscii: boolean = false): vscode.Position {
+        const line = 1 + Math.floor(offset / 16);
+        let character = offset % 16;
+        if (isAscii) {
+            character += this.firstAsciiPos;
+        } else {
+            character = this.firstBytePos + 3 * character;
+        }
+        return new vscode.Position(line, character);
+    }
+ 
+    getRanges(startOffset: number, endOffset: number, isAscii: boolean): vscode.Range[] {
+        const startPos = this.getPosition(startOffset, isAscii);
+        let endPos = this.getPosition(endOffset, isAscii);
+        endPos = new vscode.Position(endPos.line, endPos.character + (isAscii ? 1 : 2));
+ 
+        const ranges: vscode.Range[] = [];
+        const startChar = isAscii ? this.firstAsciiPos : this.firstBytePos;
+        const endChar = isAscii ? this.lastAsciiPos : this.lastBytePos;
+ 
+        for (let line = startPos.line; line <= endPos.line; ++line) {
+            const lineStart = new vscode.Position(line, line === startPos.line ? startPos.character : startChar);
+            const lineEnd = new vscode.Position(line, line === endPos.line ? endPos.character : endChar);
+            ranges.push(new vscode.Range(lineStart, lineEnd));
+        }
+ 
+        return ranges;
+    }
+ 
+    handleSelection(event: vscode.TextEditorSelectionChangeEvent): void {
+        const lineCount = event.textEditor.document.lineCount;
+        if (
+            event.selections[0].start.line + 1 === lineCount ||
+            event.selections[0].end.line + 1 === lineCount
+        ) {
+            event.textEditor.setDecorations(this.smallDecorationType, []);
+            return;
+        }
+ 
+        const startOffset = this.getOffset(event.selections[0].start);
+        const endOffset = this.getOffset(event.selections[0].end);
+ 
+        if (startOffset === undefined || endOffset === undefined) {
+            event.textEditor.setDecorations(this.smallDecorationType, []);
+            return;
+        }
+ 
+        let ranges = this.getRanges(startOffset, endOffset, false);
+        ranges = ranges.concat(this.getRanges(startOffset, endOffset, true));
+        event.textEditor.setDecorations(this.smallDecorationType, ranges);
+    }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/frontend/memory_tree_provider.ts.html b/coverage/lcov-report/src/frontend/memory_tree_provider.ts.html new file mode 100644 index 0000000..3f9fe9d --- /dev/null +++ b/coverage/lcov-report/src/frontend/memory_tree_provider.ts.html @@ -0,0 +1,322 @@ + + + + + + Code coverage report for src/frontend/memory_tree_provider.ts + + + + + + + + + +
+
+

All files / src/frontend memory_tree_provider.ts

+
+ +
+ 0% + Statements + 0/34 +
+ + +
+ 0% + Branches + 0/10 +
+ + +
+ 0% + Functions + 0/13 +
+ + +
+ 0% + Lines + 0/33 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as vscode from 'vscode';
+ 
+export class MemoryTreeProvider implements vscode.TreeDataProvider<vscode.TreeItem> {
+    private _onDidChangeTreeData = new vscode.EventEmitter<void>();
+    public onDidChangeTreeData = this._onDidChangeTreeData.event;
+    private history: string[] = [];
+ 
+    refresh(): void {
+        this._onDidChangeTreeData.fire();
+    }
+ 
+    dumpSettings(): string[] {
+        return this.history;
+    }
+ 
+    getChildren(element?: vscode.TreeItem): vscode.TreeItem[] {
+        if (!vscode.debug.activeDebugSession) {
+            return [];
+        }
+ 
+        if (this.history.length) {
+            return this.getHistoryNodes();
+        }
+ 
+        const item = new vscode.TreeItem('Enter address...');
+        item.command = {
+            title: 'Enter memory address...',
+            command: 'platformio-debug.examineMemory',
+        };
+        return [item];
+    }
+ 
+    private getHistoryNodes(): vscode.TreeItem[] {
+        return this.history.map((entry) => {
+            const item = new vscode.TreeItem(entry);
+            item.command = {
+                title: `Examine memory at ${entry}`,
+                command: 'platformio-debug.examineMemory',
+                arguments: entry.split('+'),
+            };
+            return item;
+        });
+    }
+ 
+    getTreeItem(element: vscode.TreeItem): vscode.TreeItem {
+        return element;
+    }
+ 
+    pushHistory(address: string, length: string): void {
+        const entry = `${address}+${length}`;
+        if (!this.history.includes(entry)) {
+            this.history.push(entry);
+            this.refresh();
+        }
+    }
+ 
+    deleteHistory(address: string, length: string): void {
+        const entry = `${address}+${length}`;
+        if (this.history.includes(entry)) {
+            this.history = this.history.filter((e) => e !== entry);
+            this.refresh();
+        }
+    }
+ 
+    clearHistory(): void {
+        this.history = [];
+        this.refresh();
+    }
+ 
+    debugSessionStarted(savedState: string[]): void {
+        this.history = savedState || [];
+        this.refresh();
+    }
+ 
+    debugSessionTerminated(): void {
+        this.history = [];
+        this.refresh();
+    }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/frontend/peripheral.ts.html b/coverage/lcov-report/src/frontend/peripheral.ts.html new file mode 100644 index 0000000..07473c9 --- /dev/null +++ b/coverage/lcov-report/src/frontend/peripheral.ts.html @@ -0,0 +1,3628 @@ + + + + + + Code coverage report for src/frontend/peripheral.ts + + + + + + + + + +
+
+

All files / src/frontend peripheral.ts

+
+ +
+ 0% + Statements + 0/571 +
+ + +
+ 0% + Branches + 0/306 +
+ + +
+ 0% + Functions + 0/126 +
+ + +
+ 0% + Lines + 0/543 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as fs from 'fs';
+import * as vscode from 'vscode';
+import * as xml2js from 'xml2js';
+import { NumberFormat } from '../common';
+import {
+    hexFormat,
+    binaryFormat,
+    createMask,
+    extractBits,
+} from '../utils';
+ 
+export enum RecordType {
+    Peripheral = 1,
+    Register = 2,
+    Field = 3,
+    Cluster = 4,
+}
+ 
+export enum AccessType {
+    ReadOnly = 1,
+    ReadWrite = 2,
+    WriteOnly = 3,
+}
+ 
+const ACCESS_MAP: { [key: string]: AccessType } = {
+    'read-only': AccessType.ReadOnly,
+    'write-only': AccessType.WriteOnly,
+    'read-write': AccessType.ReadWrite,
+    'writeOnce': AccessType.WriteOnly,
+    'read-writeOnce': AccessType.ReadWrite,
+};
+ 
+export class TreeNode extends vscode.TreeItem {
+    constructor(
+        public label: string,
+        public collapsibleState: vscode.TreeItemCollapsibleState,
+        public contextValue: string,
+        public node: BaseNode
+    ) {
+        super(label, collapsibleState);
+        this.command = {
+            command: 'platformio-debug.peripherals.selectedNode',
+            arguments: [node],
+            title: 'Selected Node',
+        };
+        this.tooltip = (node ? node.description : undefined) || label;
+    }
+}
+ 
+export class BaseNode {
+    public expanded: boolean = false;
+    public format: NumberFormat = NumberFormat.Auto;
+    public description: string;
+ 
+    constructor(public recordType: RecordType) {}
+ 
+    selected(): Promise<boolean> {
+        return Promise.resolve(false);
+    }
+ 
+    update(): Promise<boolean> {
+        return Promise.resolve(false);
+    }
+ 
+    performUpdate(): Promise<boolean> {
+        return Promise.resolve(false);
+    }
+ 
+    getChildren(): BaseNode[] {
+        return [];
+    }
+ 
+    getTreeNode(): TreeNode {
+        return null;
+    }
+ 
+    getCopyValue(): string | null {
+        return null;
+    }
+ 
+    setFormat(format: NumberFormat): void {
+        this.format = format;
+    }
+}
+ 
+function parseInteger(value: string): number | undefined {
+    if (/^0b([01]+)$/i.test(value)) {
+        return parseInt(value.substring(2), 2);
+    }
+    if (/^0x([0-9a-f]+)$/i.test(value)) {
+        return parseInt(value.substring(2), 16);
+    }
+    if (/^[0-9]+/i.test(value)) {
+        return parseInt(value, 10);
+    }
+    if (/^#[0-1]+/i.test(value)) {
+        return parseInt(value.substring(1), 2);
+    }
+    return undefined;
+}
+ 
+function parseDimIndex(dimIndex: string, count: number): string[] {
+    if (dimIndex.indexOf(',') !== -1) {
+        const items = dimIndex.split(',').map((s) => s.trim());
+        if (items.length !== count) {
+            throw new Error('dimIndex Element has invalid specification.');
+        }
+        return items;
+    }
+ 
+    if (/^([0-9]+)\-([0-9]+)$/i.test(dimIndex)) {
+        const parts = dimIndex.split('-').map((s) => parseInteger(s));
+        const start = parts[0];
+        if (parts[1] - start + 1 < count) {
+            throw new Error('dimIndex Element has invalid specification.');
+        }
+        const result: string[] = [];
+        for (let i = 0; i < count; i++) {
+            result.push(`${start + i}`);
+        }
+        return result;
+    }
+ 
+    if (/^[a-zA-Z]\-[a-zA-Z]$/.test(dimIndex)) {
+        const startChar = dimIndex.charCodeAt(0);
+        if (dimIndex.charCodeAt(2) - startChar + 1 < count) {
+            throw new Error('dimIndex Element has invalid specification.');
+        }
+        const result: string[] = [];
+        for (let i = 0; i < count; i++) {
+            result.push(String.fromCharCode(startChar + i));
+        }
+        return result;
+    }
+ 
+    return [];
+}
+ 
+class EnumerationValue {
+    constructor(
+        public name: string,
+        public description: string,
+        public value: number
+    ) {}
+}
+ 
+// ============================================================================
+// PeripheralNode
+// ============================================================================
+ 
+export class PeripheralNode extends BaseNode {
+    public name: string;
+    public description: string;
+    public baseAddress: number;
+    public totalLength: number;
+    public groupName: string;
+    public resetValue: number;
+    public size: number;
+    public children: BaseNode[] = [];
+    public currentValue: number[];
+ 
+    constructor(options: any) {
+        super(RecordType.Peripheral);
+        this.name = options.name;
+        this.description = options.description;
+        this.baseAddress = options.baseAddress;
+        this.totalLength = options.totalLength;
+        this.groupName = options.groupName || '';
+        this.resetValue = options.resetValue || 0;
+        this.size = options.size || 32;
+    }
+ 
+    getTreeNode(): TreeNode {
+        const label = this.name + '  [' + hexFormat(this.baseAddress) + ']';
+        return new TreeNode(
+            label,
+            this.expanded ? vscode.TreeItemCollapsibleState.Expanded : vscode.TreeItemCollapsibleState.Collapsed,
+            'peripheral',
+            this
+        );
+    }
+ 
+    getChildren(): BaseNode[] {
+        return this.children;
+    }
+ 
+    setChildren(children: BaseNode[]): void {
+        this.children = children;
+        this.children.sort((a: any, b: any) => (a.offset > b.offset ? 1 : -1));
+    }
+ 
+    addChild(child: BaseNode): void {
+        this.children.push(child);
+        this.children.sort((a: any, b: any) => (a.offset > b.offset ? 1 : -1));
+    }
+ 
+    getBytes(offset: number, size: number): Uint8Array {
+        try {
+            return new Uint8Array(this.currentValue.slice(offset, offset + size));
+        } catch (e) {
+            return new Uint8Array(0);
+        }
+    }
+ 
+    getAddress(offset: number): number {
+        return this.baseAddress + offset;
+    }
+ 
+    getFormat(): NumberFormat {
+        return this.format;
+    }
+ 
+    update(): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            if (this.expanded) {
+                vscode.debug.activeDebugSession
+                    .customRequest('read-memory', {
+                        address: this.baseAddress,
+                        length: this.totalLength > 32768 ? 32768 : this.totalLength,
+                    })
+                    .then(
+                        (result: any) => {
+                            this.currentValue = result.bytes;
+                            this.children.forEach((child) => child.update());
+                            resolve(true);
+                        },
+                        (error: any) => {
+                            reject(error);
+                        }
+                    );
+            } else {
+                resolve(false);
+            }
+        });
+    }
+ 
+    selected(): Promise<boolean> {
+        return this.update();
+    }
+ 
+    dumpSettings(): any[] {
+        const settings: any[] = [];
+        if (this.format !== NumberFormat.Auto || this.expanded) {
+            settings.push({
+                node: `${this.name}`,
+                expanded: this.expanded,
+                format: this.format,
+            });
+        }
+        this.children.forEach((child: any) => {
+            settings.push(...child.dumpSettings(`${this.name}`));
+        });
+        return settings;
+    }
+ 
+    _findByPath(path: string[]): BaseNode | null {
+        if (path.length === 0) {
+            return this;
+        }
+        const child = (this.children as any[]).find((c) => c.name === path[0]);
+        return child ? child._findByPath(path.slice(1)) : null;
+    }
+}
+ 
+// ============================================================================
+// ClusterNode
+// ============================================================================
+ 
+export class ClusterNode extends BaseNode {
+    public name: string;
+    public description: string;
+    public offset: number;
+    public accessType: AccessType;
+    public size: number;
+    public resetValue: number;
+    public children: BaseNode[] = [];
+ 
+    constructor(public parent: any, options: any) {
+        super(RecordType.Cluster);
+        this.name = options.name;
+        this.description = options.description;
+        this.offset = options.addressOffset;
+        this.accessType = options.accessType || AccessType.ReadWrite;
+        this.size = options.size || parent.size;
+        this.resetValue = options.resetValue || parent.resetValue;
+        this.parent.addChild(this);
+    }
+ 
+    getTreeNode(): TreeNode {
+        const label = `${this.name} [${hexFormat(this.offset, 0)}]`;
+        return new TreeNode(
+            label,
+            this.expanded ? vscode.TreeItemCollapsibleState.Expanded : vscode.TreeItemCollapsibleState.Collapsed,
+            'cluster',
+            this
+        );
+    }
+ 
+    getChildren(): BaseNode[] {
+        return this.children;
+    }
+ 
+    setChildren(children: BaseNode[]): void {
+        this.children = children.slice(0, children.length);
+        this.children.sort((a: any, b: any) => (a.offset > b.offset ? 1 : -1));
+    }
+ 
+    addChild(child: BaseNode): void {
+        this.children.push(child);
+        this.children.sort((a: any, b: any) => (a.offset > b.offset ? 1 : -1));
+    }
+ 
+    getBytes(offset: number, size: number): Uint8Array {
+        return this.parent.getBytes(this.offset + offset, size);
+    }
+ 
+    getAddress(offset: number): number {
+        return this.parent.getAddress(this.offset + offset);
+    }
+ 
+    getFormat(): NumberFormat {
+        return this.format !== NumberFormat.Auto ? this.format : this.parent.getFormat();
+    }
+ 
+    update(): Promise<boolean> {
+        return Promise.resolve(true);
+    }
+ 
+    dumpSettings(parentPath: string): any[] {
+        const settings: any[] = [];
+        if (this.format !== NumberFormat.Auto || this.expanded) {
+            settings.push({
+                node: `${parentPath}.${this.name}`,
+                expanded: this.expanded,
+                format: this.format,
+            });
+        }
+        this.children.forEach((child: any) => {
+            settings.push(...child.dumpSettings(`${parentPath}.${this.name}`));
+        });
+        return settings;
+    }
+ 
+    _findByPath(path: string[]): BaseNode | null {
+        if (path.length === 0) {
+            return this;
+        }
+        const child = (this.children as any[]).find((c) => c.name === path[0]);
+        return child ? child._findByPath(path.slice(1)) : null;
+    }
+}
+ 
+// ============================================================================
+// RegisterNode
+// ============================================================================
+ 
+export class RegisterNode extends BaseNode {
+    public name: string;
+    public description: string;
+    public offset: number;
+    public accessType: AccessType;
+    public size: number;
+    public resetValue: number;
+    public currentValue: number;
+    public hexLength: number;
+    public maxValue: number;
+    public binaryRegex: RegExp;
+    public hexRegex: RegExp;
+    public children: BaseNode[] = [];
+ 
+    constructor(public parent: any, options: any) {
+        super(RecordType.Register);
+        this.name = options.name;
+        this.description = options.description;
+        this.offset = options.addressOffset;
+        this.accessType = options.accessType || parent.accessType;
+        this.size = options.size || parent.size;
+        this.resetValue = options.resetValue !== undefined ? options.resetValue : parent.resetValue;
+        this.currentValue = this.resetValue;
+        this.hexLength = Math.ceil(this.size / 4);
+        this.maxValue = Math.pow(2, this.size);
+        this.binaryRegex = new RegExp(`^0b[01]{1,${this.size}}$`, 'i');
+        this.hexRegex = new RegExp(`^0x[0-9a-f]{1,${this.hexLength}}$`, 'i');
+        this.parent;
+        this.parent.addChild(this);
+    }
+ 
+    reset(): void {
+        this.currentValue = this.resetValue;
+    }
+ 
+    extractBits(offset: number, width: number): number {
+        return extractBits(this.currentValue, offset, width);
+    }
+ 
+    updateBits(offset: number, width: number, value: number): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            const maxVal = Math.pow(2, width);
+            if (value > maxVal) {
+                return reject(
+                    `Value entered is invalid. Maximum value for this field is ${maxVal - 1} (${hexFormat(maxVal - 1, 0)})`
+                );
+            }
+            const mask = createMask(offset, width);
+            const shiftedValue = value << offset;
+            const newValue = (this.currentValue & ~mask) | shiftedValue;
+            this.updateValueInternal(newValue).then(resolve, reject);
+        });
+    }
+ 
+    getTreeNode(): TreeNode {
+        let contextValue = 'registerRW';
+        if (this.accessType === AccessType.ReadOnly) {
+            contextValue = 'registerRO';
+        } else if (this.accessType === AccessType.WriteOnly) {
+            contextValue = 'registerWO';
+        }
+ 
+        let label = `${this.name} [${hexFormat(this.offset, 0)}]`;
+        if (this.accessType === AccessType.WriteOnly) {
+            label += ' - <Write Only>';
+        } else {
+            switch (this.getFormat()) {
+                case NumberFormat.Decimal:
+                    label += ` = ${this.currentValue.toString()}`;
+                    break;
+                case NumberFormat.Binary:
+                    label += ` = ${binaryFormat(this.currentValue, this.hexLength * 4, false, true)}`;
+                    break;
+                default:
+                    label += ` = ${hexFormat(this.currentValue, this.hexLength)}`;
+                    break;
+            }
+        }
+ 
+        const collapsible =
+            this.children && this.children.length > 0
+                ? this.expanded
+                    ? vscode.TreeItemCollapsibleState.Expanded
+                    : vscode.TreeItemCollapsibleState.Collapsed
+                : vscode.TreeItemCollapsibleState.None;
+ 
+        return new TreeNode(label, collapsible, contextValue, this);
+    }
+ 
+    getChildren(): BaseNode[] {
+        return this.children || [];
+    }
+ 
+    setChildren(children: BaseNode[]): void {
+        this.children = children.slice(0, children.length);
+        this.children.sort((a: any, b: any) => (a.offset > b.offset ? 1 : -1));
+    }
+ 
+    addChild(child: BaseNode): void {
+        this.children.push(child);
+        this.children.sort((a: any, b: any) => (a.offset > b.offset ? 1 : -1));
+    }
+ 
+    getFormat(): NumberFormat {
+        return this.format !== NumberFormat.Auto ? this.format : this.parent.getFormat();
+    }
+ 
+    getCopyValue(): string {
+        switch (this.getFormat()) {
+            case NumberFormat.Decimal:
+                return this.currentValue.toString();
+            case NumberFormat.Binary:
+                return binaryFormat(this.currentValue, this.hexLength * 4);
+            default:
+                return hexFormat(this.currentValue, this.hexLength);
+        }
+    }
+ 
+    performUpdate(): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            vscode.window
+                .showInputBox({ prompt: 'Enter new value: (prefix hex with 0x, binary with 0b)' })
+                .then((input) => {
+                    let value: number;
+                    if (input.match(this.hexRegex)) {
+                        value = parseInt(input.substr(2), 16);
+                    } else if (input.match(this.binaryRegex)) {
+                        value = parseInt(input.substr(2), 2);
+                    } else if (input.match(/^[0-9]+/)) {
+                        value = parseInt(input, 10);
+                        if (value >= this.maxValue) {
+                            return reject(
+                                `Value entered (${value}) is greater than the maximum value of ${this.maxValue}`
+                            );
+                        }
+                    } else {
+                        return reject('Value entered is not a valid format.');
+                    }
+                    this.updateValueInternal(value).then(resolve, reject);
+                });
+        });
+    }
+ 
+    private updateValueInternal(newValue: number): Promise<boolean> {
+        const address = this.parent.getAddress(this.offset);
+        const bytes: string[] = [];
+        const byteCount = this.size / 8;
+ 
+        for (let i = 0; i < byteCount; i++) {
+            const byte = newValue & 0xff;
+            newValue >>>= 8;
+            let hexByte = byte.toString(16);
+            if (hexByte.length === 1) {
+                hexByte = '0' + hexByte;
+            }
+            bytes[i] = hexByte;
+        }
+ 
+        return new Promise((resolve, reject) => {
+            vscode.debug.activeDebugSession
+                .customRequest('write-memory', { address, data: bytes.join('') })
+                .then(
+                    (result: any) => {
+                        this.parent.update().then(
+                            () => {},
+                            () => {}
+                        );
+                        resolve(true);
+                    },
+                    reject
+                );
+        });
+    }
+ 
+    update(): Promise<boolean> {
+        const byteCount = this.size / 8;
+        const bytes = this.parent.getBytes(this.offset, byteCount);
+        const buffer = Buffer.from(bytes);
+ 
+        switch (byteCount) {
+            case 1:
+                this.currentValue = buffer.readUInt8(0);
+                break;
+            case 2:
+                this.currentValue = buffer.readUInt16LE(0);
+                break;
+            case 4:
+                this.currentValue = buffer.readUInt32LE(0);
+                break;
+            default:
+                vscode.window.showErrorMessage(
+                    `Register ${this.name} has invalid size: ${this.size}. Should be 8, 16 or 32.`
+                );
+        }
+ 
+        this.children.forEach((child) => child.update());
+        return Promise.resolve(true);
+    }
+ 
+    dumpSettings(parentPath: string): any[] {
+        const settings: any[] = [];
+        if (this.format !== NumberFormat.Auto || this.expanded) {
+            settings.push({
+                node: `${parentPath}.${this.name}`,
+                expanded: this.expanded,
+                format: this.format,
+            });
+        }
+        this.children.forEach((child: any) => {
+            settings.push(...child.dumpSettings(`${parentPath}.${this.name}`));
+        });
+        return settings;
+    }
+ 
+    _findByPath(path: string[]): BaseNode | null {
+        if (path.length === 0) {
+            return this;
+        }
+        if (path.length === 1) {
+            return (this.children as any[]).find((c) => c.name === path[0]);
+        }
+        return null;
+    }
+}
+ 
+// ============================================================================
+// FieldNode
+// ============================================================================
+ 
+export class FieldNode extends BaseNode {
+    public name: string;
+    public description: string;
+    public offset: number;
+    public width: number;
+    public accessType: AccessType;
+    public enumeration: any;
+    public enumerationMap: { [name: string]: number };
+    public enumerationValues: string[];
+ 
+    constructor(public parent: RegisterNode, options: any) {
+        super(RecordType.Field);
+        this.name = options.name;
+        this.description = options.description;
+        this.offset = options.offset;
+        this.width = options.width;
+ 
+        if (options.accessType) {
+            if (parent.accessType === AccessType.ReadOnly && options.accessType !== AccessType.ReadOnly) {
+                this.accessType = AccessType.ReadOnly;
+            } else if (parent.accessType === AccessType.WriteOnly && options.accessType !== AccessType.WriteOnly) {
+                this.accessType = AccessType.WriteOnly;
+            } else {
+                this.accessType = options.accessType;
+            }
+        } else {
+            this.accessType = parent.accessType;
+        }
+ 
+        if (options.enumeration) {
+            this.enumeration = options.enumeration;
+            this.enumerationMap = {};
+            this.enumerationValues = [];
+            for (const key in options.enumeration) {
+                const name = options.enumeration[key].name;
+                this.enumerationValues.push(name);
+                this.enumerationMap[name] = key as any;
+            }
+        }
+ 
+        this.parent.addChild(this);
+    }
+ 
+    getTreeNode(): TreeNode {
+        const value = this.parent.extractBits(this.offset, this.width);
+        let enumEntry: EnumerationValue | null = null;
+        let label = this.name;
+        const startBit = this.offset;
+        let contextValue = 'field';
+ 
+        label += `[${this.offset + this.width - 1}:${startBit}]`;
+ 
+        if (this.name.toLowerCase() === 'reserved') {
+            contextValue = 'field-res';
+        } else if (this.accessType === AccessType.WriteOnly) {
+            label += ' - <Write Only>';
+        } else {
+            let formattedValue = '';
+            switch (this.getFormat()) {
+                case NumberFormat.Decimal:
+                    formattedValue = value.toString();
+                    break;
+                case NumberFormat.Binary:
+                    formattedValue = binaryFormat(value, this.width);
+                    break;
+                case NumberFormat.Hexidecimal:
+                    formattedValue = hexFormat(value, Math.ceil(this.width / 4), true);
+                    break;
+                default:
+                    formattedValue =
+                        this.width >= 4
+                            ? hexFormat(value, Math.ceil(this.width / 4), true)
+                            : binaryFormat(value, this.width);
+                    break;
+            }
+ 
+            if (this.enumeration && this.enumeration[value]) {
+                enumEntry = this.enumeration[value];
+                label += ` = ${enumEntry.name} (${formattedValue})`;
+            } else {
+                label += ` = ${formattedValue}`;
+            }
+        }
+ 
+        if (this.parent.accessType === AccessType.ReadOnly) {
+            contextValue = 'field-ro';
+        }
+ 
+        return new TreeNode(label, vscode.TreeItemCollapsibleState.None, contextValue, this);
+    }
+ 
+    performUpdate(): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            if (this.enumeration) {
+                vscode.window.showQuickPick(this.enumerationValues).then(
+                    (selected) => {
+                        if (selected === undefined) {
+                            return reject('Input not selected');
+                        }
+                        const value = this.enumerationMap[selected];
+                        this.parent.updateBits(this.offset, this.width, value as any).then(resolve, reject);
+                    }
+                );
+            } else {
+                vscode.window
+                    .showInputBox({ prompt: 'Enter new value: (prefix hex with 0x, binary with 0b)' })
+                    .then((input) => {
+                        const value = parseInteger(input);
+                        if (value === undefined) {
+                            return reject('Unable to parse input value.');
+                        }
+                        this.parent.updateBits(this.offset, this.width, value).then(resolve, reject);
+                    });
+            }
+        });
+    }
+ 
+    getCopyValue(): string {
+        const value = this.parent.extractBits(this.offset, this.width);
+        switch (this.getFormat()) {
+            case NumberFormat.Decimal:
+                return value.toString();
+            case NumberFormat.Binary:
+                return binaryFormat(value, this.width);
+            case NumberFormat.Hexidecimal:
+                return hexFormat(value, Math.ceil(this.width / 4), true);
+            default:
+                return this.width >= 4
+                    ? hexFormat(value, Math.ceil(this.width / 4), true)
+                    : binaryFormat(value, this.width);
+        }
+    }
+ 
+    getFormat(): NumberFormat {
+        return this.format !== NumberFormat.Auto ? this.format : this.parent.getFormat();
+    }
+ 
+    dumpSettings(parentPath: string): any[] {
+        if (this.format !== NumberFormat.Auto) {
+            return [{ node: `${parentPath}.${this.name}`, format: this.format }];
+        }
+        return [];
+    }
+ 
+    _findByPath(path: string[]): BaseNode | null {
+        return path.length === 0 ? this : null;
+    }
+}
+ 
+// ============================================================================
+// PeripheralTreeProvider
+// ============================================================================
+ 
+export class PeripheralTreeProvider implements vscode.TreeDataProvider<TreeNode> {
+    private _onDidChangeTreeData = new vscode.EventEmitter<void>();
+    public onDidChangeTreeData = this._onDidChangeTreeData.event;
+    private peripherials: PeripheralNode[] = [];
+    private loaded: boolean = false;
+    private viewExpanded: boolean = false;
+    private svdPath: string;
+    private initialSettings: any[];
+ 
+    refresh(): void {
+        this._onDidChangeTreeData.fire();
+    }
+ 
+    dumpSettings(): any[] {
+        const settings: any[] = [];
+        this.peripherials.forEach((peripheral) => {
+            settings.push(...peripheral.dumpSettings());
+        });
+        return settings;
+    }
+ 
+    _parseFields(fieldDefs: any[], parent: RegisterNode): FieldNode[] {
+        const fields: FieldNode[] = [];
+        fieldDefs.map((field) => {
+            let offset: number;
+            let width: number;
+            const description = field.description ? field.description[0] : '';
+ 
+            if (field.bitOffset && field.bitWidth) {
+                offset = parseInteger(field.bitOffset[0]);
+                width = parseInteger(field.bitWidth[0]);
+            } else if (field.bitRange) {
+                let range = field.bitRange[0];
+                range = range.substring(1, range.length - 1);
+                range = range.split(':');
+                const msb = parseInteger(range[0]);
+                const lsb = parseInteger(range[1]);
+                width = msb - lsb + 1;
+                offset = lsb;
+            } else if (field.msb && field.lsb) {
+                const msb = parseInteger(field.msb[0]);
+                const lsb = parseInteger(field.lsb[0]);
+                width = msb - lsb + 1;
+                offset = lsb;
+            } else {
+                throw new Error(
+                    `Unable to parse SVD file: field ${field.name[0]} must have either bitOffset and bitWidth elements, bitRange Element, or msb and lsb elements.`
+                );
+            }
+ 
+            let enumeration: any = null;
+            if (field.enumeratedValues) {
+                enumeration = {};
+                field.enumeratedValues[0].enumeratedValue.map((enumVal: any) => {
+                    if (enumVal.value && enumVal.value.length > 0) {
+                        const name = enumVal.name[0];
+                        const desc = enumVal.description ? enumVal.description[0] : name;
+                        const val = parseInteger(enumVal.value[0].toLowerCase());
+                        enumeration[val] = new EnumerationValue(name, desc, val);
+                    }
+                });
+            }
+ 
+            const fieldOptions: any = {
+                name: field.name[0],
+                description,
+                offset,
+                width,
+                enumeration,
+            };
+ 
+            if (field.dim) {
+                if (!field.dimIncrement) {
+                    throw new Error(
+                        `Unable to parse SVD file: field ${field.name[0]} has dim element, with no dimIncrement element.`
+                    );
+                }
+                const dimCount = parseInteger(field.dim[0]);
+                const dimIncrement = parseInteger(field.dimIncrement[0]);
+                let dimIndices: string[] = [];
+                if (field.dimIndex) {
+                    dimIndices = parseDimIndex(field.dimIndex[0], dimCount);
+                } else {
+                    for (let i = 0; i < dimCount; i++) {
+                        dimIndices.push(`${i}`);
+                    }
+                }
+                const baseName = field.name[0];
+                const baseOffset = offset;
+                for (let i = 0; i < dimCount; i++) {
+                    const name = baseName.replace('%s', dimIndices[i]);
+                    fields.push(
+                        new FieldNode(parent, {
+                            ...fieldOptions,
+                            name,
+                            offset: baseOffset + dimIncrement * i,
+                        })
+                    );
+                }
+            } else {
+                fields.push(new FieldNode(parent, { ...fieldOptions }));
+            }
+        });
+        return fields;
+    }
+ 
+    _parseRegisters(registerDefs: any[], parent: any): RegisterNode[] {
+        const registers: RegisterNode[] = [];
+        registerDefs.forEach((reg) => {
+            const options: any = {};
+            if (reg.description) {
+                options.description = reg.description[0];
+            }
+            if (reg.access) {
+                options.accessType = ACCESS_MAP[reg.access[0]];
+            }
+            if (reg.size) {
+                options.size = parseInteger(reg.size[0]);
+            }
+            if (reg.resetValue) {
+                options.resetValue = parseInteger(reg.resetValue[0]);
+            }
+ 
+            if (reg.dim) {
+                if (!reg.dimIncrement) {
+                    throw new Error(
+                        `Unable to parse SVD file: register ${reg.name[0]} has dim element, with no dimIncrement element.`
+                    );
+                }
+                const dimCount = parseInteger(reg.dim[0]);
+                const dimIncrement = parseInteger(reg.dimIncrement[0]);
+                let dimIndices: string[] = [];
+                if (reg.dimIndex) {
+                    dimIndices = parseDimIndex(reg.dimIndex[0], dimCount);
+                } else {
+                    for (let i = 0; i < dimCount; i++) {
+                        dimIndices.push(`${i}`);
+                    }
+                }
+                const baseName = reg.name[0];
+                const baseOffset = parseInteger(reg.addressOffset[0]);
+                for (let i = 0; i < dimCount; i++) {
+                    const name = baseName.replace('%s', dimIndices[i]);
+                    const registerNode = new RegisterNode(parent, {
+                        ...options,
+                        name,
+                        addressOffset: baseOffset + dimIncrement * i,
+                    });
+                    if (reg.fields && reg.fields.length === 1) {
+                        this._parseFields(reg.fields[0].field, registerNode);
+                    }
+                    registers.push(registerNode);
+                }
+            } else {
+                const registerNode = new RegisterNode(parent, {
+                    ...options,
+                    name: reg.name[0],
+                    addressOffset: parseInteger(reg.addressOffset[0]),
+                });
+                if (reg.fields && reg.fields.length === 1) {
+                    this._parseFields(reg.fields[0].field, registerNode);
+                }
+                registers.push(registerNode);
+            }
+        });
+        registers.sort((a, b) => (a.offset < b.offset ? -1 : a.offset > b.offset ? 1 : 0));
+        return registers;
+    }
+ 
+    _parseClusters(clusterDefs: any[], parent: any): ClusterNode[] {
+        const clusters: ClusterNode[] = [];
+        if (!clusterDefs) {
+            return [];
+        }
+        clusterDefs.forEach((cluster) => {
+            const options: any = {};
+            if (cluster.description) {
+                options.description = cluster.description[0];
+            }
+            if (cluster.access) {
+                options.accessType = ACCESS_MAP[cluster.access[0]];
+            }
+            if (cluster.size) {
+                options.size = parseInteger(cluster.size[0]);
+            }
+            if (cluster.resetValue) {
+                options.resetValue = parseInteger(cluster.resetValue);
+            }
+ 
+            if (cluster.dim) {
+                if (!cluster.dimIncrement) {
+                    throw new Error(
+                        `Unable to parse SVD file: cluster ${cluster.name[0]} has dim element, with no dimIncrement element.`
+                    );
+                }
+                const dimCount = parseInteger(cluster.dim[0]);
+                const dimIncrement = parseInteger(cluster.dimIncrement[0]);
+                let dimIndices: string[] = [];
+                if (cluster.dimIndex) {
+                    dimIndices = parseDimIndex(cluster.dimIndex[0], dimCount);
+                } else {
+                    for (let i = 0; i < dimCount; i++) {
+                        dimIndices.push(`${i}`);
+                    }
+                }
+                const baseName = cluster.name[0];
+                const baseOffset = parseInteger(cluster.addressOffset[0]);
+                for (let i = 0; i < dimCount; i++) {
+                    const name = baseName.replace('%s', dimIndices[i]);
+                    const clusterNode = new ClusterNode(parent, {
+                        ...options,
+                        name,
+                        addressOffset: baseOffset + dimIncrement * i,
+                    });
+                    if (cluster.register) {
+                        this._parseRegisters(cluster.register, clusterNode);
+                    }
+                    clusters.push(clusterNode);
+                }
+            } else {
+                const clusterNode = new ClusterNode(parent, {
+                    ...options,
+                    name: cluster.name[0],
+                    addressOffset: parseInteger(cluster.addressOffset[0]),
+                });
+                if (cluster.register) {
+                    this._parseRegisters(cluster.register, clusterNode);
+                    clusters.push(clusterNode);
+                }
+            }
+        });
+        return clusters;
+    }
+ 
+    _parsePeripheral(peripheralDef: any, defaults: any): PeripheralNode {
+        const totalLength = parseInteger(peripheralDef.addressBlock[0].size[0]);
+        const options: any = {
+            name: peripheralDef.name[0],
+            baseAddress: parseInteger(peripheralDef.baseAddress[0]),
+            description: peripheralDef.description[0],
+            totalLength,
+        };
+ 
+        if (peripheralDef.access) {
+            options.accessType = ACCESS_MAP[peripheralDef.access[0]];
+        }
+        if (peripheralDef.size) {
+            options.size = parseInteger(peripheralDef.size[0]);
+        }
+        if (peripheralDef.resetValue) {
+            options.resetValue = parseInteger(peripheralDef.resetValue[0]);
+        }
+        if (peripheralDef.groupName) {
+            options.groupName = peripheralDef.groupName[0];
+        }
+ 
+        const peripheral = new PeripheralNode(options);
+ 
+        if (peripheralDef.registers[0].register) {
+            this._parseRegisters(peripheralDef.registers[0].register, peripheral);
+        }
+        if (peripheralDef.registers[0].cluster) {
+            this._parseClusters(peripheralDef.registers[0].cluster, peripheral);
+        }
+ 
+        return peripheral;
+    }
+ 
+    _loadSVD(svdPath: string): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            fs.readFile(svdPath, 'utf8', (err, data) => {
+                if (err) {
+                    return reject(err);
+                }
+                xml2js.parseString(data, (parseErr: any, result: any) => {
+                    if (parseErr) {
+                        return reject(parseErr);
+                    }
+                    try {
+                        const peripheralMap: { [name: string]: any } = {};
+                        const defaults: any = {
+                            accessType: AccessType.ReadWrite,
+                            size: 32,
+                            resetValue: 0,
+                        };
+ 
+                        if (result.device.resetValue) {
+                            defaults.resetValue = parseInteger(result.device.resetValue[0]);
+                        }
+                        if (result.device.size) {
+                            defaults.size = parseInteger(result.device.size[0]);
+                        }
+                        if (result.device.access) {
+                            defaults.accessType = ACCESS_MAP[result.device.access[0]];
+                        }
+ 
+                        result.device.peripherals[0].peripheral.forEach((periph: any) => {
+                            const name = periph.name[0];
+                            peripheralMap[name] = periph;
+                        });
+ 
+                        // Handle derived peripherals
+                        for (const name in peripheralMap) {
+                            const periph = peripheralMap[name];
+                            if (periph.$ && periph.$.derivedFrom) {
+                                const base = peripheralMap[periph.$.derivedFrom];
+                                peripheralMap[name] = { ...base, ...periph };
+                            }
+                        }
+ 
+                        this.peripherials = [];
+                        for (const name in peripheralMap) {
+                            this.peripherials.push(this._parsePeripheral(peripheralMap[name], defaults));
+                        }
+ 
+                        this.peripherials.sort((a, b) =>
+                            a.groupName > b.groupName
+                                ? 1
+                                : a.groupName < b.groupName
+                                ? -1
+                                : a.name > b.name
+                                ? 1
+                                : a.name < b.name
+                                ? -1
+                                : 0
+                        );
+ 
+                        return resolve(true);
+                    } catch (e) {
+                        return reject(e);
+                    }
+                });
+            });
+        });
+    }
+ 
+    _findNodeByPath(path: string): BaseNode | null {
+        const parts = path.split('.');
+        const peripheral = this.peripherials.find((p) => p.name === parts[0]);
+        return peripheral ? peripheral._findByPath(parts.slice(1)) : null;
+    }
+ 
+    getTreeItem(element: TreeNode): TreeNode {
+        return element;
+    }
+ 
+    getChildren(element?: TreeNode): TreeNode[] {
+        this.viewExpanded = true;
+        if (!vscode.debug.activeDebugSession) {
+            return [];
+        }
+ 
+        if (this.peripherials.length > 0) {
+            if (element) {
+                return element.node.getChildren().map((child) => child.getTreeNode());
+            }
+            return this.peripherials.map((p) => p.getTreeNode());
+        }
+ 
+        if (!this.loaded) {
+            this._update();
+        }
+ 
+        return [
+            new TreeNode(
+                this.svdPath ? 'Loading...' : 'No Information',
+                vscode.TreeItemCollapsibleState.None,
+                'message',
+                null
+            ),
+        ];
+    }
+ 
+    private async _load(): Promise<boolean> {
+        if (this.svdPath) {
+            this.loaded = true;
+            this.peripherials = [];
+            return new Promise((resolve) => {
+                setTimeout(async () => {
+                    try {
+                        await this._loadSVD(this.svdPath);
+                        if (this.initialSettings) {
+                            this.initialSettings.forEach((setting) => {
+                                const node = this._findNodeByPath(setting.node);
+                                if (node) {
+                                    node.expanded = setting.expanded || false;
+                                    node.format = setting.format;
+                                }
+                            });
+                        }
+                    } catch (e) {
+                        this.peripherials = [];
+                        vscode.window.showErrorMessage(`Unable to parse SVD file: ${e.toString()}`);
+                    }
+                    resolve(true);
+                }, 1000);
+            });
+        }
+    }
+ 
+    private async _update(): Promise<void> {
+        if (this.viewExpanded) {
+            if (!this.loaded) {
+                await this._load();
+            }
+            try {
+                await Promise.all(this.peripherials.map((p) => p.update()));
+            } catch (e) {
+                // Ignore update errors
+            }
+            this.refresh();
+        }
+    }
+ 
+    onDidExpandElement(event: any): void {
+        event.element.node.expanded = true;
+        event.element.node.update();
+        this.refresh();
+    }
+ 
+    onDidCollapseElement(event: any): void {
+        event.element.node.expanded = false;
+    }
+ 
+    debugSessionStarted(svdPath: string, savedState: any[]): void {
+        this.peripherials = [];
+        this.loaded = false;
+        this.svdPath = svdPath;
+        this.initialSettings = savedState;
+    }
+ 
+    debugSessionTerminated(): void {
+        this.peripherials = [];
+        this.loaded = false;
+        this.refresh();
+    }
+ 
+    debugStopped(): Promise<void> {
+        return this._update();
+    }
+ 
+    debugContinued(): void {}
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/frontend/registers.ts.html b/coverage/lcov-report/src/frontend/registers.ts.html new file mode 100644 index 0000000..bd6b2cf --- /dev/null +++ b/coverage/lcov-report/src/frontend/registers.ts.html @@ -0,0 +1,1165 @@ + + + + + + Code coverage report for src/frontend/registers.ts + + + + + + + + + +
+
+

All files / src/frontend registers.ts

+
+ +
+ 0% + Statements + 0/166 +
+ + +
+ 0% + Branches + 0/76 +
+ + +
+ 0% + Functions + 0/48 +
+ + +
+ 0% + Lines + 0/159 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as vscode from 'vscode';
+import { NumberFormat } from '../common';
+import { hexFormat, binaryFormat, extractBits } from '../utils';
+ 
+export enum RecordType {
+    Register = 0,
+    Field = 1,
+}
+ 
+export class TreeNode extends vscode.TreeItem {
+    constructor(
+        public label: string,
+        public collapsibleState: vscode.TreeItemCollapsibleState,
+        public contextValue: string,
+        public node: BaseNode
+    ) {
+        super(label, collapsibleState);
+        this.command = {
+            command: 'platformio-debug.registers.selectedNode',
+            arguments: [node],
+            title: 'Selected Node',
+        };
+    }
+}
+ 
+export class BaseNode {
+    public format: NumberFormat = NumberFormat.Auto;
+    public expanded: boolean = false;
+ 
+    constructor(public recordType: RecordType) {}
+ 
+    getChildren(): BaseNode[] {
+        return [];
+    }
+ 
+    getTreeNode(): TreeNode {
+        return null;
+    }
+ 
+    getCopyValue(): string | null {
+        return null;
+    }
+ 
+    setFormat(format: NumberFormat): void {
+        this.format = format;
+    }
+}
+ 
+export class RegisterNode extends BaseNode {
+    public name: string;
+    public index: number;
+    public fields: FieldNode[];
+    public currentValue: number;
+ 
+    constructor(name: string, index: number) {
+        super(RecordType.Register);
+        this.name = name;
+        this.index = index;
+ 
+        if (name.toUpperCase() === 'XPSR' || name.toUpperCase() === 'CPSR') {
+            this.fields = [
+                new FieldNode('Negative Flag (N)', 31, 1, this),
+                new FieldNode('Zero Flag (Z)', 30, 1, this),
+                new FieldNode('Carry or borrow flag (C)', 29, 1, this),
+                new FieldNode('Overflow Flag (V)', 28, 1, this),
+                new FieldNode('Saturation Flag (Q)', 27, 1, this),
+                new FieldNode('GE', 16, 4, this),
+                new FieldNode('Interrupt Number', 0, 8, this),
+                new FieldNode('ICI/IT', 25, 2, this),
+                new FieldNode('ICI/IT', 10, 6, this),
+                new FieldNode('Thumb State (T)', 24, 1, this),
+            ];
+        } else if (name.toUpperCase() === 'CONTROL') {
+            this.fields = [
+                new FieldNode('FPCA', 2, 1, this),
+                new FieldNode('SPSEL', 1, 1, this),
+                new FieldNode('nPRIV', 0, 1, this),
+            ];
+        }
+ 
+        this.currentValue = 0;
+    }
+ 
+    extractBits(offset: number, width: number): number {
+        return extractBits(this.currentValue, offset, width);
+    }
+ 
+    getTreeNode(): TreeNode {
+        let label = `${this.name} = `;
+        switch (this.getFormat()) {
+            case NumberFormat.Decimal:
+                label += this.currentValue.toString();
+                break;
+            case NumberFormat.Binary:
+                label += binaryFormat(this.currentValue, 32, false, true);
+                break;
+            default:
+                label += hexFormat(this.currentValue, 8);
+                break;
+        }
+ 
+        if (this.fields && this.fields.length > 0) {
+            return new TreeNode(
+                label,
+                this.expanded ? vscode.TreeItemCollapsibleState.Expanded : vscode.TreeItemCollapsibleState.Collapsed,
+                'register',
+                this
+            );
+        }
+        return new TreeNode(label, vscode.TreeItemCollapsibleState.None, 'register', this);
+    }
+ 
+    getChildren(): BaseNode[] {
+        return this.fields;
+    }
+ 
+    setValue(value: number): void {
+        this.currentValue = value;
+    }
+ 
+    getCopyValue(): string {
+        switch (this.getFormat()) {
+            case NumberFormat.Decimal:
+                return this.currentValue.toString();
+            case NumberFormat.Binary:
+                return binaryFormat(this.currentValue, 32);
+            default:
+                return hexFormat(this.currentValue, 8);
+        }
+    }
+ 
+    getFormat(): NumberFormat {
+        return this.format;
+    }
+ 
+    dumpSettings(): any[] {
+        const settings: any[] = [];
+        if (this.expanded || this.format !== NumberFormat.Auto) {
+            settings.push({
+                node: this.name,
+                format: this.format,
+                expanded: this.expanded,
+            });
+        }
+        if (this.fields) {
+            settings.push(
+                ...this.fields.map((field) => field.dumpSettings()).filter((s) => s !== null)
+            );
+        }
+        return settings;
+    }
+}
+ 
+export class FieldNode extends BaseNode {
+    constructor(
+        public name: string,
+        public offset: number,
+        public size: number,
+        public register: RegisterNode
+    ) {
+        super(RecordType.Field);
+    }
+ 
+    getTreeNode(): TreeNode {
+        const value = this.register.extractBits(this.offset, this.size);
+        let label = `${this.name} = `;
+ 
+        switch (this.getFormat()) {
+            case NumberFormat.Decimal:
+                label += value.toString();
+                break;
+            case NumberFormat.Binary:
+                label += binaryFormat(value, this.size, false, true);
+                break;
+            case NumberFormat.Hexidecimal:
+                label += hexFormat(value, Math.ceil(this.size / 4), true);
+                break;
+            default:
+                label +=
+                    this.size >= 4
+                        ? hexFormat(value, Math.ceil(this.size / 4), true)
+                        : binaryFormat(value, this.size, false, true);
+                break;
+        }
+ 
+        return new TreeNode(label, vscode.TreeItemCollapsibleState.None, 'field', this);
+    }
+ 
+    getCopyValue(): string {
+        const value = this.register.extractBits(this.offset, this.size);
+        switch (this.getFormat()) {
+            case NumberFormat.Decimal:
+                return value.toString();
+            case NumberFormat.Binary:
+                return binaryFormat(value, this.size);
+            case NumberFormat.Hexidecimal:
+                return hexFormat(value, Math.ceil(this.size / 4), true);
+            default:
+                return this.size >= 4
+                    ? hexFormat(value, Math.ceil(this.size / 4), true)
+                    : binaryFormat(value, this.size);
+        }
+    }
+ 
+    getFormat(): NumberFormat {
+        return this.format === NumberFormat.Auto ? this.register.getFormat() : this.format;
+    }
+ 
+    dumpSettings(): any {
+        if (this.format !== NumberFormat.Auto) {
+            return { node: `${this.register.name}.${this.name}`, format: this.format };
+        }
+        return null;
+    }
+}
+ 
+export class RegisterTreeProvider implements vscode.TreeDataProvider<TreeNode> {
+    private _onDidChangeTreeData = new vscode.EventEmitter<void>();
+    public onDidChangeTreeData = this._onDidChangeTreeData.event;
+    private loaded: boolean = false;
+    private viewExpanded: boolean = false;
+    private registers: RegisterNode[] = [];
+    private registerMap: { [index: number]: RegisterNode } = {};
+    private initialSettings: any[];
+ 
+    refresh(): void {
+        this._onDidChangeTreeData.fire();
+    }
+ 
+    dumpSettings(): any[] {
+        const settings: any[] = [];
+        this.registers.forEach((reg) => {
+            settings.push(...reg.dumpSettings());
+        });
+        return settings;
+    }
+ 
+    fetchRegisterList(): void {
+        if (!vscode.debug.activeDebugSession) {
+            return;
+        }
+ 
+        if (this.loaded) {
+            this._fetchRegisterValues();
+        } else {
+            vscode.debug.activeDebugSession.customRequest('read-register-list').then((names: any) => {
+                this.loaded = true;
+                this.createRegisters(names);
+                this._fetchRegisterValues();
+            });
+        }
+    }
+ 
+    private _fetchRegisterValues(): void {
+        vscode.debug.activeDebugSession.customRequest('read-registers').then((registers: any) => {
+            registers.forEach((reg: any) => {
+                const index = parseInt(reg.number, 10);
+                const value = parseInt(reg.value, 16);
+                const registerNode = this.registerMap[index];
+                if (registerNode) {
+                    registerNode.setValue(value);
+                }
+            });
+            this.refresh();
+        });
+    }
+ 
+    getTreeItem(element: TreeNode): TreeNode {
+        return element;
+    }
+ 
+    private createRegisters(names: string[]): void {
+        this.registerMap = {};
+        this.registers = [];
+ 
+        names.forEach((name, index) => {
+            if (name) {
+                const reg = new RegisterNode(name, index);
+                this.registers.push(reg);
+                this.registerMap[index] = reg;
+            }
+        });
+ 
+        if (this.initialSettings) {
+            this.initialSettings.forEach((setting) => {
+                if (setting.node.indexOf('.') === -1) {
+                    const reg = this.registers.find((r) => r.name === setting.node);
+                    if (reg) {
+                        if (setting.expanded) {
+                            reg.expanded = setting.expanded;
+                        }
+                        if (setting.format) {
+                            reg.setFormat(setting.format);
+                        }
+                    }
+                } else {
+                    const [regName, fieldName] = setting.node.split('.');
+                    const reg = this.registers.find((r) => r.name === regName);
+                    if (reg) {
+                        const field = reg.getChildren().find((f: any) => f.name === fieldName);
+                        if (field && setting.format) {
+                            field.setFormat(setting.format);
+                        }
+                    }
+                }
+            });
+        }
+ 
+        this.refresh();
+    }
+ 
+    updateRegisterValues(values: any[]): void {
+        values.forEach((val) => {
+            this.registerMap[val.number].setValue(val.value);
+        });
+        this.refresh();
+    }
+ 
+    getChildren(element?: TreeNode): any[] {
+        this.viewExpanded = true;
+        if (!vscode.debug.activeDebugSession) {
+            return [];
+        }
+ 
+        if (this.registers.length > 0) {
+            if (element) {
+                return element.node.getChildren().map((child) => child.getTreeNode());
+            }
+            return this.registers.map((reg) => reg.getTreeNode());
+        }
+ 
+        if (!this.loaded) {
+            setTimeout(() => this.fetchRegisterList(), 1000);
+        }
+ 
+        return [new TreeNode('Loading...', vscode.TreeItemCollapsibleState.None, 'message', null)];
+    }
+ 
+    debugSessionTerminated(): void {
+        this.loaded = false;
+        this.registers = [];
+        this.registerMap = {};
+        this.refresh();
+    }
+ 
+    debugSessionStarted(savedState: any[]): void {
+        this.loaded = false;
+        this.registers = [];
+        this.registerMap = {};
+        this.initialSettings = savedState;
+    }
+ 
+    debugStopped(): void {
+        if (this.viewExpanded) {
+            this.fetchRegisterList();
+        }
+    }
+ 
+    debugContinued(): void {}
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/index.html b/coverage/lcov-report/src/index.html new file mode 100644 index 0000000..2def25b --- /dev/null +++ b/coverage/lcov-report/src/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for src + + + + + + + + + +
+
+

All files src

+
+ +
+ 0% + Statements + 0/211 +
+ + +
+ 0% + Branches + 0/94 +
+ + +
+ 0% + Functions + 0/58 +
+ + +
+ 0% + Lines + 0/208 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
common.ts +
+
0%0/220%0/70%0/60%0/22
extension.ts +
+
0%0/1490%0/680%0/460%0/148
utils.ts +
+
0%0/400%0/190%0/60%0/38
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/utils.ts.html b/coverage/lcov-report/src/utils.ts.html new file mode 100644 index 0000000..f9440e4 --- /dev/null +++ b/coverage/lcov-report/src/utils.ts.html @@ -0,0 +1,274 @@ + + + + + + Code coverage report for src/utils.ts + + + + + + + + + +
+
+

All files / src utils.ts

+
+ +
+ 0% + Statements + 0/40 +
+ + +
+ 0% + Branches + 0/19 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 0% + Lines + 0/38 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
export function hexFormat(value: number, padding: number = 8, includePrefix: boolean = true): string {
+    let result = value.toString(16);
+    while (result.length < padding) {
+        result = '0' + result;
+    }
+    return includePrefix ? '0x' + result : result;
+}
+ 
+export function binaryFormat(
+    value: number,
+    padding: number = 0,
+    includePrefix: boolean = true,
+    groupByNibble: boolean = false
+): string {
+    let result = (value >>> 0).toString(2);
+    while (result.length < padding) {
+        result = '0' + result;
+    }
+ 
+    if (groupByNibble) {
+        const extraZeros = 4 - (result.length % 4);
+        for (let i = 0; i < extraZeros; i++) {
+            result = '0' + result;
+        }
+        const groups = result.match(/[01]{4}/g);
+        result = groups.join(' ');
+        result = result.substring(extraZeros);
+    }
+ 
+    return includePrefix ? '0b' + result : result;
+}
+ 
+export function createMask(offset: number, width: number): number {
+    let mask = 0;
+    const end = offset + width - 1;
+    for (let i = offset; i <= end; i++) {
+        mask = (mask | (1 << i)) >>> 0;
+    }
+    return mask;
+}
+ 
+export function extractBits(value: number, offset: number, width: number): number {
+    return ((value & createMask(offset, width)) >>> offset) >>> 0;
+}
+ 
+export function parseQuery(queryString: string): { [key: string]: string } {
+    const params: { [key: string]: string } = {};
+    const pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');
+    for (const pair of pairs) {
+        const parts = pair.split('=');
+        params[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1] || '');
+    }
+    return params;
+}
+ 
+export function encodeDisassembly(name: string, file: string): string {
+    let uri = 'disassembly:///';
+    if (file) {
+        uri += `${file}:`;
+    }
+    uri += `${name}.dbgasm?func=${name}&file=${file || ''}`;
+    return uri;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 0000000..a8736a6 --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,4706 @@ +TN: +SF:src/common.ts +FN:3,(anonymous_0) +FN:11,(anonymous_1) +FN:17,(anonymous_2) +FN:23,(anonymous_3) +FN:28,(anonymous_4) +FN:35,(anonymous_5) +FNF:6 +FNH:0 +FNDA:0,(anonymous_0) +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:10,0 +DA:12,0 +DA:16,0 +DA:18,0 +DA:22,0 +DA:24,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +LF:22 +LH:0 +BRDA:3,0,0,0 +BRDA:3,0,1,0 +BRDA:23,1,0,0 +BRDA:28,2,0,0 +BRDA:28,2,1,0 +BRDA:35,3,0,0 +BRDA:35,3,1,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/extension.ts +FN:22,(anonymous_16) +FN:69,(anonymous_17) +FN:77,(anonymous_18) +FN:81,(anonymous_19) +FN:96,(anonymous_20) +FN:118,(anonymous_22) +FN:125,(anonymous_23) +FN:149,(anonymous_24) +FN:150,(anonymous_25) +FN:175,(anonymous_26) +FN:178,(anonymous_27) +FN:182,(anonymous_28) +FN:187,(anonymous_29) +FN:191,(anonymous_30) +FN:192,validateInput +FN:215,(anonymous_32) +FN:224,(anonymous_33) +FN:232,(anonymous_34) +FN:238,(anonymous_35) +FN:242,(anonymous_36) +FN:250,(anonymous_37) +FN:253,(anonymous_38) +FN:259,(anonymous_39) +FN:261,(anonymous_40) +FN:266,(anonymous_41) +FN:272,(anonymous_42) +FN:277,(anonymous_43) +FN:282,(anonymous_44) +FN:286,(anonymous_45) +FN:293,(anonymous_46) +FN:304,(anonymous_48) +FN:310,(anonymous_49) +FN:317,(anonymous_50) +FN:328,(anonymous_52) +FN:332,(anonymous_53) +FN:345,(anonymous_54) +FN:352,(anonymous_55) +FN:374,(anonymous_56) +FN:395,(anonymous_57) +FN:400,(anonymous_58) +FN:401,(anonymous_59) +FN:406,(anonymous_60) +FN:411,(anonymous_61) +FN:413,(anonymous_62) +FN:426,activate +FN:430,deactivate +FNF:46 +FNH:0 +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,validateInput +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_48) +FNDA:0,(anonymous_49) +FNDA:0,(anonymous_50) +FNDA:0,(anonymous_52) +FNDA:0,(anonymous_53) +FNDA:0,(anonymous_54) +FNDA:0,(anonymous_55) +FNDA:0,(anonymous_56) +FNDA:0,(anonymous_57) +FNDA:0,(anonymous_58) +FNDA:0,(anonymous_59) +FNDA:0,(anonymous_60) +FNDA:0,(anonymous_61) +FNDA:0,(anonymous_62) +FNDA:0,activate +FNDA:0,deactivate +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:13,0 +DA:14,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:30,0 +DA:34,0 +DA:70,0 +DA:71,0 +DA:78,0 +DA:82,0 +DA:83,0 +DA:86,0 +DA:87,0 +DA:88,0 +DA:89,0 +DA:90,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:102,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:107,0 +DA:111,0 +DA:112,0 +DA:118,0 +DA:121,0 +DA:122,0 +DA:123,0 +DA:124,0 +DA:125,0 +DA:135,0 +DA:137,0 +DA:138,0 +DA:141,0 +DA:142,0 +DA:145,0 +DA:150,0 +DA:151,0 +DA:152,0 +DA:153,0 +DA:156,0 +DA:157,0 +DA:160,0 +DA:176,0 +DA:183,0 +DA:184,0 +DA:188,0 +DA:193,0 +DA:194,0 +DA:196,0 +DA:199,0 +DA:200,0 +DA:201,0 +DA:204,0 +DA:205,0 +DA:208,0 +DA:216,0 +DA:217,0 +DA:225,0 +DA:226,0 +DA:227,0 +DA:229,0 +DA:235,0 +DA:243,0 +DA:251,0 +DA:254,0 +DA:260,0 +DA:262,0 +DA:263,0 +DA:267,0 +DA:273,0 +DA:274,0 +DA:276,0 +DA:278,0 +DA:279,0 +DA:287,0 +DA:288,0 +DA:289,0 +DA:294,0 +DA:300,0 +DA:301,0 +DA:305,0 +DA:306,0 +DA:311,0 +DA:312,0 +DA:313,0 +DA:318,0 +DA:324,0 +DA:325,0 +DA:329,0 +DA:330,0 +DA:331,0 +DA:333,0 +DA:336,0 +DA:340,0 +DA:343,0 +DA:346,0 +DA:353,0 +DA:354,0 +DA:358,0 +DA:362,0 +DA:367,0 +DA:368,0 +DA:369,0 +DA:370,0 +DA:375,0 +DA:376,0 +DA:379,0 +DA:381,0 +DA:382,0 +DA:384,0 +DA:385,0 +DA:387,0 +DA:388,0 +DA:390,0 +DA:391,0 +DA:396,0 +DA:397,0 +DA:399,0 +DA:400,0 +DA:402,0 +DA:407,0 +DA:408,0 +DA:414,0 +DA:415,0 +DA:418,0 +DA:419,0 +DA:420,0 +DA:422,0 +DA:426,0 +DA:427,0 +DA:430,0 +LF:148 +LH:0 +BRDA:70,0,0,0 +BRDA:70,0,1,0 +BRDA:70,1,0,0 +BRDA:70,1,1,0 +BRDA:78,2,0,0 +BRDA:78,2,1,0 +BRDA:82,3,0,0 +BRDA:82,3,1,0 +BRDA:82,4,0,0 +BRDA:82,4,1,0 +BRDA:87,5,0,0 +BRDA:87,5,1,0 +BRDA:89,6,0,0 +BRDA:89,6,1,0 +BRDA:97,7,0,0 +BRDA:97,7,1,0 +BRDA:102,8,0,0 +BRDA:102,8,1,0 +BRDA:121,9,0,0 +BRDA:121,9,1,0 +BRDA:123,10,0,0 +BRDA:123,10,1,0 +BRDA:131,11,0,0 +BRDA:131,11,1,0 +BRDA:141,12,0,0 +BRDA:141,12,1,0 +BRDA:156,13,0,0 +BRDA:156,13,1,0 +BRDA:193,14,0,0 +BRDA:193,14,1,0 +BRDA:193,15,0,0 +BRDA:193,15,1,0 +BRDA:199,16,0,0 +BRDA:199,16,1,0 +BRDA:204,17,0,0 +BRDA:204,17,1,0 +BRDA:204,18,0,0 +BRDA:204,18,1,0 +BRDA:216,19,0,0 +BRDA:216,19,1,0 +BRDA:225,20,0,0 +BRDA:225,20,1,0 +BRDA:262,21,0,0 +BRDA:262,21,1,0 +BRDA:273,22,0,0 +BRDA:273,22,1,0 +BRDA:278,23,0,0 +BRDA:278,23,1,0 +BRDA:288,24,0,0 +BRDA:288,24,1,0 +BRDA:305,25,0,0 +BRDA:305,25,1,0 +BRDA:312,26,0,0 +BRDA:312,26,1,0 +BRDA:329,27,0,0 +BRDA:329,27,1,0 +BRDA:353,28,0,0 +BRDA:353,28,1,0 +BRDA:375,29,0,0 +BRDA:375,29,1,0 +BRDA:379,30,0,0 +BRDA:379,30,1,0 +BRDA:379,30,2,0 +BRDA:379,30,3,0 +BRDA:414,31,0,0 +BRDA:414,31,1,0 +BRDA:419,32,0,0 +BRDA:419,32,1,0 +BRF:68 +BRH:0 +end_of_record +TN: +SF:src/utils.ts +FN:1,hexFormat +FN:9,binaryFormat +FN:33,createMask +FN:42,extractBits +FN:46,parseQuery +FN:56,encodeDisassembly +FNF:6 +FNH:0 +FNDA:0,hexFormat +FNDA:0,binaryFormat +FNDA:0,createMask +FNDA:0,extractBits +FNDA:0,parseQuery +FNDA:0,encodeDisassembly +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:9,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:39,0 +DA:42,0 +DA:43,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:53,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:61,0 +DA:62,0 +LF:38 +LH:0 +BRDA:1,0,0,0 +BRDA:1,1,0,0 +BRDA:6,2,0,0 +BRDA:6,2,1,0 +BRDA:11,3,0,0 +BRDA:12,4,0,0 +BRDA:13,5,0,0 +BRDA:20,6,0,0 +BRDA:20,6,1,0 +BRDA:30,7,0,0 +BRDA:30,7,1,0 +BRDA:48,8,0,0 +BRDA:48,8,1,0 +BRDA:51,9,0,0 +BRDA:51,9,1,0 +BRDA:58,10,0,0 +BRDA:58,10,1,0 +BRDA:61,11,0,0 +BRDA:61,11,1,0 +BRF:19 +BRH:0 +end_of_record +TN: +SF:src/backend/adapter.ts +FN:27,(anonymous_16) +FN:37,(anonymous_17) +FN:43,(anonymous_18) +FN:67,(anonymous_19) +FN:71,(anonymous_20) +FN:88,(anonymous_21) +FN:101,(anonymous_22) +FN:106,(anonymous_23) +FN:111,(anonymous_24) +FN:135,(anonymous_25) +FN:149,(anonymous_26) +FN:165,(anonymous_27) +FN:171,(anonymous_28) +FN:224,(anonymous_29) +FN:228,(anonymous_30) +FN:241,(anonymous_31) +FN:285,(anonymous_33) +FN:300,(anonymous_35) +FN:312,(anonymous_36) +FN:318,(anonymous_38) +FN:327,(anonymous_39) +FN:329,(anonymous_40) +FN:330,(anonymous_41) +FN:338,(anonymous_42) +FN:345,(anonymous_43) +FN:348,(anonymous_44) +FN:351,(anonymous_45) +FN:358,(anonymous_46) +FN:360,(anonymous_47) +FN:363,(anonymous_48) +FN:365,(anonymous_49) +FN:375,(anonymous_50) +FN:382,(anonymous_51) +FN:384,(anonymous_52) +FN:387,(anonymous_53) +FN:398,(anonymous_54) +FN:405,(anonymous_55) +FN:416,(anonymous_56) +FN:423,(anonymous_57) +FN:424,(anonymous_58) +FN:428,(anonymous_59) +FN:430,(anonymous_60) +FN:437,(anonymous_61) +FN:451,(anonymous_62) +FN:455,(anonymous_63) +FN:465,(anonymous_64) +FN:471,(anonymous_65) +FN:479,(anonymous_66) +FN:486,(anonymous_67) +FN:493,(anonymous_68) +FN:497,(anonymous_69) +FN:501,(anonymous_70) +FN:506,(anonymous_71) +FN:518,(anonymous_72) +FN:523,(anonymous_73) +FN:528,(anonymous_74) +FN:533,(anonymous_75) +FN:533,(anonymous_76) +FN:535,(anonymous_77) +FN:548,(anonymous_78) +FN:564,(anonymous_79) +FN:564,(anonymous_80) +FN:569,(anonymous_81) +FN:582,(anonymous_82) +FN:583,(anonymous_83) +FN:583,(anonymous_84) +FN:586,(anonymous_85) +FN:599,(anonymous_86) +FN:614,(anonymous_87) +FN:626,(anonymous_88) +FN:628,(anonymous_89) +FN:645,(anonymous_90) +FN:645,(anonymous_91) +FN:650,(anonymous_92) +FN:663,(anonymous_93) +FN:672,(anonymous_95) +FN:683,(anonymous_96) +FN:687,(anonymous_97) +FN:698,(anonymous_98) +FN:707,(anonymous_99) +FN:739,(anonymous_101) +FN:798,(anonymous_102) +FN:802,(anonymous_103) +FN:811,(anonymous_104) +FN:818,(anonymous_105) +FN:829,(anonymous_106) +FN:834,(anonymous_108) +FN:854,(anonymous_109) +FN:883,(anonymous_111) +FN:900,(anonymous_113) +FN:924,(anonymous_115) +FN:942,(anonymous_117) +FN:972,(anonymous_118) +FN:1005,(anonymous_120) +FN:1027,(anonymous_121) +FN:1032,(anonymous_122) +FN:1032,(anonymous_123) +FN:1099,(anonymous_124) +FN:1129,(anonymous_126) +FN:1136,(anonymous_127) +FN:1143,(anonymous_128) +FN:1169,(anonymous_130) +FN:1171,(anonymous_131) +FN:1174,(anonymous_132) +FN:1180,(anonymous_133) +FN:1182,(anonymous_134) +FN:1186,(anonymous_135) +FN:1192,(anonymous_136) +FN:1216,(anonymous_138) +FN:1218,(anonymous_139) +FN:1221,(anonymous_140) +FN:1227,(anonymous_141) +FN:1251,(anonymous_143) +FN:1258,(anonymous_144) +FN:1259,(anonymous_145) +FNF:115 +FNH:0 +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:0,(anonymous_48) +FNDA:0,(anonymous_49) +FNDA:0,(anonymous_50) +FNDA:0,(anonymous_51) +FNDA:0,(anonymous_52) +FNDA:0,(anonymous_53) +FNDA:0,(anonymous_54) +FNDA:0,(anonymous_55) +FNDA:0,(anonymous_56) +FNDA:0,(anonymous_57) +FNDA:0,(anonymous_58) +FNDA:0,(anonymous_59) +FNDA:0,(anonymous_60) +FNDA:0,(anonymous_61) +FNDA:0,(anonymous_62) +FNDA:0,(anonymous_63) +FNDA:0,(anonymous_64) +FNDA:0,(anonymous_65) +FNDA:0,(anonymous_66) +FNDA:0,(anonymous_67) +FNDA:0,(anonymous_68) +FNDA:0,(anonymous_69) +FNDA:0,(anonymous_70) +FNDA:0,(anonymous_71) +FNDA:0,(anonymous_72) +FNDA:0,(anonymous_73) +FNDA:0,(anonymous_74) +FNDA:0,(anonymous_75) +FNDA:0,(anonymous_76) +FNDA:0,(anonymous_77) +FNDA:0,(anonymous_78) +FNDA:0,(anonymous_79) +FNDA:0,(anonymous_80) +FNDA:0,(anonymous_81) +FNDA:0,(anonymous_82) +FNDA:0,(anonymous_83) +FNDA:0,(anonymous_84) +FNDA:0,(anonymous_85) +FNDA:0,(anonymous_86) +FNDA:0,(anonymous_87) +FNDA:0,(anonymous_88) +FNDA:0,(anonymous_89) +FNDA:0,(anonymous_90) +FNDA:0,(anonymous_91) +FNDA:0,(anonymous_92) +FNDA:0,(anonymous_93) +FNDA:0,(anonymous_95) +FNDA:0,(anonymous_96) +FNDA:0,(anonymous_97) +FNDA:0,(anonymous_98) +FNDA:0,(anonymous_99) +FNDA:0,(anonymous_101) +FNDA:0,(anonymous_102) +FNDA:0,(anonymous_103) +FNDA:0,(anonymous_104) +FNDA:0,(anonymous_105) +FNDA:0,(anonymous_106) +FNDA:0,(anonymous_108) +FNDA:0,(anonymous_109) +FNDA:0,(anonymous_111) +FNDA:0,(anonymous_113) +FNDA:0,(anonymous_115) +FNDA:0,(anonymous_117) +FNDA:0,(anonymous_118) +FNDA:0,(anonymous_120) +FNDA:0,(anonymous_121) +FNDA:0,(anonymous_122) +FNDA:0,(anonymous_123) +FNDA:0,(anonymous_124) +FNDA:0,(anonymous_126) +FNDA:0,(anonymous_127) +FNDA:0,(anonymous_128) +FNDA:0,(anonymous_130) +FNDA:0,(anonymous_131) +FNDA:0,(anonymous_132) +FNDA:0,(anonymous_133) +FNDA:0,(anonymous_134) +FNDA:0,(anonymous_135) +FNDA:0,(anonymous_136) +FNDA:0,(anonymous_138) +FNDA:0,(anonymous_139) +FNDA:0,(anonymous_140) +FNDA:0,(anonymous_141) +FNDA:0,(anonymous_143) +FNDA:0,(anonymous_144) +FNDA:0,(anonymous_145) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:28,0 +DA:29,0 +DA:33,0 +DA:34,0 +DA:38,0 +DA:44,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:68,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:79,0 +DA:80,0 +DA:81,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:92,0 +DA:93,0 +DA:94,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:102,0 +DA:103,0 +DA:107,0 +DA:108,0 +DA:112,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:116,0 +DA:117,0 +DA:118,0 +DA:119,0 +DA:121,0 +DA:122,0 +DA:123,0 +DA:125,0 +DA:126,0 +DA:128,0 +DA:130,0 +DA:131,0 +DA:132,0 +DA:133,0 +DA:135,0 +DA:136,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:140,0 +DA:143,0 +DA:150,0 +DA:151,0 +DA:152,0 +DA:153,0 +DA:154,0 +DA:156,0 +DA:157,0 +DA:166,0 +DA:172,0 +DA:174,0 +DA:175,0 +DA:176,0 +DA:177,0 +DA:178,0 +DA:179,0 +DA:181,0 +DA:182,0 +DA:185,0 +DA:186,0 +DA:187,0 +DA:190,0 +DA:191,0 +DA:192,0 +DA:193,0 +DA:196,0 +DA:197,0 +DA:198,0 +DA:201,0 +DA:202,0 +DA:205,0 +DA:206,0 +DA:209,0 +DA:210,0 +DA:213,0 +DA:214,0 +DA:217,0 +DA:218,0 +DA:221,0 +DA:222,0 +DA:223,0 +DA:225,0 +DA:226,0 +DA:229,0 +DA:230,0 +DA:233,0 +DA:236,0 +DA:237,0 +DA:242,0 +DA:243,0 +DA:244,0 +DA:245,0 +DA:252,0 +DA:254,0 +DA:256,0 +DA:257,0 +DA:258,0 +DA:259,0 +DA:260,0 +DA:261,0 +DA:268,0 +DA:270,0 +DA:274,0 +DA:275,0 +DA:278,0 +DA:281,0 +DA:286,0 +DA:287,0 +DA:288,0 +DA:290,0 +DA:291,0 +DA:294,0 +DA:295,0 +DA:296,0 +DA:300,0 +DA:308,0 +DA:309,0 +DA:313,0 +DA:314,0 +DA:318,0 +DA:328,0 +DA:330,0 +DA:331,0 +DA:336,0 +DA:339,0 +DA:340,0 +DA:346,0 +DA:347,0 +DA:349,0 +DA:352,0 +DA:353,0 +DA:359,0 +DA:361,0 +DA:362,0 +DA:363,0 +DA:364,0 +DA:365,0 +DA:366,0 +DA:368,0 +DA:371,0 +DA:373,0 +DA:376,0 +DA:377,0 +DA:383,0 +DA:385,0 +DA:387,0 +DA:388,0 +DA:389,0 +DA:392,0 +DA:394,0 +DA:396,0 +DA:399,0 +DA:400,0 +DA:406,0 +DA:407,0 +DA:408,0 +DA:410,0 +DA:413,0 +DA:417,0 +DA:418,0 +DA:420,0 +DA:424,0 +DA:425,0 +DA:429,0 +DA:430,0 +DA:431,0 +DA:432,0 +DA:433,0 +DA:434,0 +DA:438,0 +DA:443,0 +DA:444,0 +DA:446,0 +DA:447,0 +DA:452,0 +DA:456,0 +DA:457,0 +DA:459,0 +DA:460,0 +DA:462,0 +DA:466,0 +DA:467,0 +DA:468,0 +DA:472,0 +DA:473,0 +DA:474,0 +DA:475,0 +DA:476,0 +DA:480,0 +DA:481,0 +DA:482,0 +DA:483,0 +DA:487,0 +DA:488,0 +DA:489,0 +DA:490,0 +DA:494,0 +DA:498,0 +DA:502,0 +DA:503,0 +DA:507,0 +DA:508,0 +DA:510,0 +DA:511,0 +DA:512,0 +DA:513,0 +DA:514,0 +DA:519,0 +DA:520,0 +DA:524,0 +DA:525,0 +DA:529,0 +DA:530,0 +DA:533,0 +DA:534,0 +DA:535,0 +DA:536,0 +DA:545,0 +DA:546,0 +DA:547,0 +DA:548,0 +DA:549,0 +DA:550,0 +DA:553,0 +DA:554,0 +DA:556,0 +DA:559,0 +DA:560,0 +DA:564,0 +DA:565,0 +DA:566,0 +DA:568,0 +DA:569,0 +DA:570,0 +DA:575,0 +DA:576,0 +DA:578,0 +DA:583,0 +DA:584,0 +DA:585,0 +DA:586,0 +DA:589,0 +DA:590,0 +DA:591,0 +DA:593,0 +DA:594,0 +DA:596,0 +DA:597,0 +DA:598,0 +DA:599,0 +DA:600,0 +DA:601,0 +DA:602,0 +DA:614,0 +DA:615,0 +DA:626,0 +DA:627,0 +DA:628,0 +DA:634,0 +DA:635,0 +DA:637,0 +DA:640,0 +DA:641,0 +DA:645,0 +DA:646,0 +DA:647,0 +DA:649,0 +DA:650,0 +DA:651,0 +DA:656,0 +DA:657,0 +DA:659,0 +DA:664,0 +DA:665,0 +DA:666,0 +DA:667,0 +DA:670,0 +DA:671,0 +DA:672,0 +DA:673,0 +DA:675,0 +DA:676,0 +DA:678,0 +DA:679,0 +DA:682,0 +DA:683,0 +DA:686,0 +DA:688,0 +DA:689,0 +DA:690,0 +DA:691,0 +DA:692,0 +DA:693,0 +DA:694,0 +DA:696,0 +DA:698,0 +DA:700,0 +DA:701,0 +DA:703,0 +DA:708,0 +DA:709,0 +DA:710,0 +DA:712,0 +DA:713,0 +DA:714,0 +DA:715,0 +DA:717,0 +DA:718,0 +DA:721,0 +DA:726,0 +DA:727,0 +DA:728,0 +DA:732,0 +DA:733,0 +DA:734,0 +DA:738,0 +DA:739,0 +DA:740,0 +DA:741,0 +DA:745,0 +DA:746,0 +DA:747,0 +DA:757,0 +DA:768,0 +DA:779,0 +DA:791,0 +DA:792,0 +DA:794,0 +DA:799,0 +DA:803,0 +DA:804,0 +DA:805,0 +DA:806,0 +DA:807,0 +DA:808,0 +DA:812,0 +DA:813,0 +DA:815,0 +DA:820,0 +DA:821,0 +DA:823,0 +DA:824,0 +DA:826,0 +DA:832,0 +DA:833,0 +DA:834,0 +DA:835,0 +DA:836,0 +DA:837,0 +DA:839,0 +DA:840,0 +DA:842,0 +DA:843,0 +DA:845,0 +DA:846,0 +DA:847,0 +DA:848,0 +DA:851,0 +DA:860,0 +DA:861,0 +DA:862,0 +DA:863,0 +DA:864,0 +DA:865,0 +DA:866,0 +DA:867,0 +DA:869,0 +DA:876,0 +DA:877,0 +DA:879,0 +DA:884,0 +DA:885,0 +DA:887,0 +DA:888,0 +DA:889,0 +DA:890,0 +DA:891,0 +DA:893,0 +DA:894,0 +DA:896,0 +DA:906,0 +DA:907,0 +DA:908,0 +DA:909,0 +DA:910,0 +DA:912,0 +DA:913,0 +DA:914,0 +DA:915,0 +DA:917,0 +DA:918,0 +DA:920,0 +DA:930,0 +DA:931,0 +DA:932,0 +DA:933,0 +DA:940,0 +DA:941,0 +DA:942,0 +DA:943,0 +DA:944,0 +DA:945,0 +DA:947,0 +DA:949,0 +DA:951,0 +DA:959,0 +DA:960,0 +DA:962,0 +DA:965,0 +DA:968,0 +DA:975,0 +DA:976,0 +DA:979,0 +DA:980,0 +DA:981,0 +DA:982,0 +DA:985,0 +DA:989,0 +DA:990,0 +DA:991,0 +DA:994,0 +DA:996,0 +DA:997,0 +DA:1000,0 +DA:1001,0 +DA:1002,0 +DA:1003,0 +DA:1004,0 +DA:1005,0 +DA:1006,0 +DA:1007,0 +DA:1008,0 +DA:1009,0 +DA:1011,0 +DA:1013,0 +DA:1015,0 +DA:1016,0 +DA:1018,0 +DA:1020,0 +DA:1021,0 +DA:1022,0 +DA:1023,0 +DA:1024,0 +DA:1025,0 +DA:1027,0 +DA:1028,0 +DA:1029,0 +DA:1032,0 +DA:1033,0 +DA:1036,0 +DA:1037,0 +DA:1044,0 +DA:1045,0 +DA:1046,0 +DA:1047,0 +DA:1048,0 +DA:1050,0 +DA:1051,0 +DA:1052,0 +DA:1057,0 +DA:1059,0 +DA:1064,0 +DA:1066,0 +DA:1071,0 +DA:1074,0 +DA:1077,0 +DA:1081,0 +DA:1083,0 +DA:1090,0 +DA:1091,0 +DA:1094,0 +DA:1095,0 +DA:1100,0 +DA:1101,0 +DA:1102,0 +DA:1103,0 +DA:1104,0 +DA:1108,0 +DA:1110,0 +DA:1114,0 +DA:1116,0 +DA:1117,0 +DA:1118,0 +DA:1119,0 +DA:1123,0 +DA:1125,0 +DA:1128,0 +DA:1130,0 +DA:1134,0 +DA:1137,0 +DA:1144,0 +DA:1145,0 +DA:1146,0 +DA:1148,0 +DA:1149,0 +DA:1150,0 +DA:1151,0 +DA:1152,0 +DA:1153,0 +DA:1154,0 +DA:1158,0 +DA:1161,0 +DA:1162,0 +DA:1163,0 +DA:1165,0 +DA:1170,0 +DA:1172,0 +DA:1175,0 +DA:1181,0 +DA:1183,0 +DA:1184,0 +DA:1187,0 +DA:1193,0 +DA:1194,0 +DA:1195,0 +DA:1196,0 +DA:1197,0 +DA:1199,0 +DA:1203,0 +DA:1204,0 +DA:1205,0 +DA:1209,0 +DA:1210,0 +DA:1212,0 +DA:1217,0 +DA:1219,0 +DA:1222,0 +DA:1228,0 +DA:1229,0 +DA:1230,0 +DA:1231,0 +DA:1232,0 +DA:1234,0 +DA:1238,0 +DA:1239,0 +DA:1240,0 +DA:1244,0 +DA:1245,0 +DA:1247,0 +DA:1252,0 +DA:1253,0 +DA:1255,0 +DA:1256,0 +DA:1258,0 +DA:1259,0 +DA:1260,0 +DA:1261,0 +DA:1267,0 +LF:588 +LH:0 +BRDA:43,0,0,0 +BRDA:122,1,0,0 +BRDA:122,1,1,0 +BRDA:125,2,0,0 +BRDA:125,2,1,0 +BRDA:156,3,0,0 +BRDA:156,3,1,0 +BRDA:172,4,0,0 +BRDA:172,4,1,0 +BRDA:172,4,2,0 +BRDA:172,4,3,0 +BRDA:172,4,4,0 +BRDA:172,4,5,0 +BRDA:172,4,6,0 +BRDA:172,4,7,0 +BRDA:172,4,8,0 +BRDA:172,4,9,0 +BRDA:172,4,10,0 +BRDA:176,5,0,0 +BRDA:176,5,1,0 +BRDA:222,6,0,0 +BRDA:222,6,1,0 +BRDA:242,7,0,0 +BRDA:242,7,1,0 +BRDA:256,8,0,0 +BRDA:256,8,1,0 +BRDA:259,9,0,0 +BRDA:259,9,1,0 +BRDA:272,10,0,0 +BRDA:272,10,1,0 +BRDA:287,11,0,0 +BRDA:287,11,1,0 +BRDA:290,12,0,0 +BRDA:290,12,1,0 +BRDA:361,13,0,0 +BRDA:361,13,1,0 +BRDA:385,14,0,0 +BRDA:385,14,1,0 +BRDA:388,15,0,0 +BRDA:388,15,1,0 +BRDA:406,16,0,0 +BRDA:406,16,1,0 +BRDA:407,17,0,0 +BRDA:407,17,1,0 +BRDA:417,18,0,0 +BRDA:417,18,1,0 +BRDA:443,19,0,0 +BRDA:443,19,1,0 +BRDA:456,20,0,0 +BRDA:456,20,1,0 +BRDA:459,21,0,0 +BRDA:459,21,1,0 +BRDA:472,22,0,0 +BRDA:472,22,1,0 +BRDA:507,23,0,0 +BRDA:507,23,1,0 +BRDA:510,24,0,0 +BRDA:510,24,1,0 +BRDA:529,25,0,0 +BRDA:529,25,1,0 +BRDA:529,26,0,0 +BRDA:529,26,1,0 +BRDA:549,27,0,0 +BRDA:549,27,1,0 +BRDA:559,28,0,0 +BRDA:559,28,1,0 +BRDA:565,29,0,0 +BRDA:565,29,1,0 +BRDA:575,30,0,0 +BRDA:575,30,1,0 +BRDA:585,31,0,0 +BRDA:585,31,1,0 +BRDA:596,32,0,0 +BRDA:596,32,1,0 +BRDA:600,33,0,0 +BRDA:600,33,1,0 +BRDA:640,34,0,0 +BRDA:640,34,1,0 +BRDA:646,35,0,0 +BRDA:646,35,1,0 +BRDA:656,36,0,0 +BRDA:656,36,1,0 +BRDA:664,37,0,0 +BRDA:664,37,1,0 +BRDA:675,38,0,0 +BRDA:675,38,1,0 +BRDA:689,39,0,0 +BRDA:689,39,1,0 +BRDA:694,40,0,0 +BRDA:694,40,1,0 +BRDA:715,41,0,0 +BRDA:715,41,1,0 +BRDA:717,42,0,0 +BRDA:717,42,1,0 +BRDA:721,43,0,0 +BRDA:721,43,1,0 +BRDA:722,44,0,0 +BRDA:722,44,1,0 +BRDA:722,44,2,0 +BRDA:727,45,0,0 +BRDA:727,45,1,0 +BRDA:727,46,0,0 +BRDA:727,46,1,0 +BRDA:733,47,0,0 +BRDA:733,47,1,0 +BRDA:740,48,0,0 +BRDA:740,48,1,0 +BRDA:745,49,0,0 +BRDA:745,49,1,0 +BRDA:812,50,0,0 +BRDA:812,50,1,0 +BRDA:820,51,0,0 +BRDA:820,51,1,0 +BRDA:826,52,0,0 +BRDA:826,52,1,0 +BRDA:842,53,0,0 +BRDA:842,53,1,0 +BRDA:842,54,0,0 +BRDA:842,54,1,0 +BRDA:940,55,0,0 +BRDA:940,55,1,0 +BRDA:941,56,0,0 +BRDA:941,56,1,0 +BRDA:943,57,0,0 +BRDA:943,57,1,0 +BRDA:944,58,0,0 +BRDA:944,58,1,0 +BRDA:975,59,0,0 +BRDA:975,59,1,0 +BRDA:979,60,0,0 +BRDA:979,60,1,0 +BRDA:979,61,0,0 +BRDA:979,61,1,0 +BRDA:985,62,0,0 +BRDA:985,62,1,0 +BRDA:986,63,0,0 +BRDA:986,63,1,0 +BRDA:996,64,0,0 +BRDA:996,64,1,0 +BRDA:1000,65,0,0 +BRDA:1000,65,1,0 +BRDA:1001,66,0,0 +BRDA:1001,66,1,0 +BRDA:1008,67,0,0 +BRDA:1008,67,1,0 +BRDA:1009,68,0,0 +BRDA:1009,68,1,0 +BRDA:1011,69,0,0 +BRDA:1011,69,1,0 +BRDA:1020,70,0,0 +BRDA:1020,70,1,0 +BRDA:1022,71,0,0 +BRDA:1022,71,1,0 +BRDA:1044,72,0,0 +BRDA:1044,72,1,0 +BRDA:1045,73,0,0 +BRDA:1045,73,1,0 +BRDA:1046,74,0,0 +BRDA:1046,74,1,0 +BRDA:1047,75,0,0 +BRDA:1047,75,1,0 +BRDA:1051,76,0,0 +BRDA:1051,76,1,0 +BRDA:1100,77,0,0 +BRDA:1100,77,1,0 +BRDA:1116,78,0,0 +BRDA:1116,78,1,0 +BRDA:1131,79,0,0 +BRDA:1131,79,1,0 +BRDA:1148,80,0,0 +BRDA:1148,80,1,0 +BRDA:1150,81,0,0 +BRDA:1150,81,1,0 +BRDA:1152,82,0,0 +BRDA:1152,82,1,0 +BRDA:1152,83,0,0 +BRDA:1152,83,1,0 +BRDA:1154,84,0,0 +BRDA:1154,84,1,0 +BRDA:1155,85,0,0 +BRDA:1155,85,1,0 +BRDA:1195,86,0,0 +BRDA:1195,86,1,0 +BRDA:1199,87,0,0 +BRDA:1199,87,1,0 +BRDA:1200,88,0,0 +BRDA:1200,88,1,0 +BRDA:1204,89,0,0 +BRDA:1204,89,1,0 +BRDA:1230,90,0,0 +BRDA:1230,90,1,0 +BRDA:1234,91,0,0 +BRDA:1234,91,1,0 +BRDA:1235,92,0,0 +BRDA:1235,92,1,0 +BRDA:1239,93,0,0 +BRDA:1239,93,1,0 +BRDA:1252,94,0,0 +BRDA:1252,94,1,0 +BRDA:1255,95,0,0 +BRDA:1255,95,1,0 +BRF:201 +BRH:0 +end_of_record +TN: +SF:src/backend/expand_value.ts +FN:12,isExpandable +FN:34,expandValue +FN:40,(anonymous_2) +FN:72,(anonymous_3) +FN:76,(anonymous_4) +FN:102,(anonymous_5) +FN:111,(anonymous_6) +FN:177,(anonymous_7) +FN:218,(anonymous_8) +FN:236,(anonymous_9) +FN:266,(anonymous_10) +FN:274,(anonymous_11) +FNF:12 +FNH:0 +FNDA:0,isExpandable +FNDA:0,expandValue +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:31,0 +DA:34,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:60,0 +DA:61,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:69,0 +DA:70,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:80,0 +DA:81,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:87,0 +DA:89,0 +DA:92,0 +DA:93,0 +DA:102,0 +DA:103,0 +DA:105,0 +DA:106,0 +DA:109,0 +DA:111,0 +DA:112,0 +DA:113,0 +DA:114,0 +DA:116,0 +DA:117,0 +DA:118,0 +DA:119,0 +DA:121,0 +DA:122,0 +DA:123,0 +DA:124,0 +DA:125,0 +DA:130,0 +DA:131,0 +DA:132,0 +DA:134,0 +DA:135,0 +DA:136,0 +DA:139,0 +DA:141,0 +DA:142,0 +DA:143,0 +DA:144,0 +DA:145,0 +DA:147,0 +DA:148,0 +DA:149,0 +DA:150,0 +DA:151,0 +DA:152,0 +DA:153,0 +DA:155,0 +DA:156,0 +DA:158,0 +DA:159,0 +DA:163,0 +DA:164,0 +DA:165,0 +DA:166,0 +DA:167,0 +DA:168,0 +DA:170,0 +DA:171,0 +DA:177,0 +DA:178,0 +DA:182,0 +DA:183,0 +DA:184,0 +DA:185,0 +DA:186,0 +DA:187,0 +DA:188,0 +DA:189,0 +DA:190,0 +DA:191,0 +DA:192,0 +DA:193,0 +DA:194,0 +DA:195,0 +DA:196,0 +DA:197,0 +DA:198,0 +DA:199,0 +DA:200,0 +DA:201,0 +DA:202,0 +DA:203,0 +DA:208,0 +DA:209,0 +DA:211,0 +DA:214,0 +DA:218,0 +DA:219,0 +DA:220,0 +DA:221,0 +DA:222,0 +DA:224,0 +DA:225,0 +DA:226,0 +DA:227,0 +DA:229,0 +DA:230,0 +DA:231,0 +DA:233,0 +DA:236,0 +DA:237,0 +DA:239,0 +DA:240,0 +DA:241,0 +DA:244,0 +DA:245,0 +DA:246,0 +DA:247,0 +DA:249,0 +DA:250,0 +DA:254,0 +DA:255,0 +DA:256,0 +DA:259,0 +DA:266,0 +DA:267,0 +DA:268,0 +DA:269,0 +DA:270,0 +DA:274,0 +DA:275,0 +DA:276,0 +DA:277,0 +DA:278,0 +DA:282,0 +DA:283,0 +LF:181 +LH:0 +BRDA:14,0,0,0 +BRDA:14,0,1,0 +BRDA:17,1,0,0 +BRDA:17,1,1,0 +BRDA:20,2,0,0 +BRDA:20,2,1,0 +BRDA:23,3,0,0 +BRDA:23,3,1,0 +BRDA:23,4,0,0 +BRDA:23,4,1,0 +BRDA:23,4,2,0 +BRDA:23,4,3,0 +BRDA:26,5,0,0 +BRDA:26,5,1,0 +BRDA:30,6,0,0 +BRDA:30,6,1,0 +BRDA:30,6,2,0 +BRDA:30,6,3,0 +BRDA:37,7,0,0 +BRDA:42,8,0,0 +BRDA:42,8,1,0 +BRDA:42,9,0,0 +BRDA:42,9,1,0 +BRDA:53,10,0,0 +BRDA:53,10,1,0 +BRDA:55,11,0,0 +BRDA:55,11,1,0 +BRDA:57,12,0,0 +BRDA:57,12,1,0 +BRDA:78,13,0,0 +BRDA:78,13,1,0 +BRDA:80,14,0,0 +BRDA:80,14,1,0 +BRDA:82,15,0,0 +BRDA:82,15,1,0 +BRDA:105,16,0,0 +BRDA:105,16,1,0 +BRDA:109,17,0,0 +BRDA:109,17,1,0 +BRDA:113,18,0,0 +BRDA:113,18,1,0 +BRDA:117,19,0,0 +BRDA:117,19,1,0 +BRDA:121,20,0,0 +BRDA:121,20,1,0 +BRDA:123,21,0,0 +BRDA:123,21,1,0 +BRDA:135,22,0,0 +BRDA:135,22,1,0 +BRDA:135,23,0,0 +BRDA:135,23,1,0 +BRDA:139,24,0,0 +BRDA:139,24,1,0 +BRDA:139,25,0,0 +BRDA:139,25,1,0 +BRDA:139,25,2,0 +BRDA:151,26,0,0 +BRDA:151,26,1,0 +BRDA:164,27,0,0 +BRDA:164,27,1,0 +BRDA:182,28,0,0 +BRDA:182,28,1,0 +BRDA:184,29,0,0 +BRDA:184,29,1,0 +BRDA:187,30,0,0 +BRDA:187,30,1,0 +BRDA:190,31,0,0 +BRDA:190,31,1,0 +BRDA:193,32,0,0 +BRDA:193,32,1,0 +BRDA:196,33,0,0 +BRDA:196,33,1,0 +BRDA:199,34,0,0 +BRDA:199,34,1,0 +BRDA:203,35,0,0 +BRDA:203,35,1,0 +BRDA:204,36,0,0 +BRDA:204,36,1,0 +BRDA:204,36,2,0 +BRDA:218,37,0,0 +BRDA:221,38,0,0 +BRDA:221,38,1,0 +BRDA:226,39,0,0 +BRDA:226,39,1,0 +BRDA:230,40,0,0 +BRDA:230,40,1,0 +BRDA:239,41,0,0 +BRDA:239,41,1,0 +BRDA:244,42,0,0 +BRDA:244,42,1,0 +BRDA:244,43,0,0 +BRDA:244,43,1,0 +BRDA:245,44,0,0 +BRDA:245,44,1,0 +BRDA:245,45,0,0 +BRDA:245,45,1,0 +BRDA:254,46,0,0 +BRDA:254,46,1,0 +BRDA:254,47,0,0 +BRDA:254,47,1,0 +BRDA:268,48,0,0 +BRDA:268,48,1,0 +BRDA:274,49,0,0 +BRDA:276,50,0,0 +BRDA:276,50,1,0 +BRF:105 +BRH:0 +end_of_record +TN: +SF:src/backend/mi_parse.ts +FN:8,(anonymous_0) +FN:14,(anonymous_1) +FN:73,(anonymous_2) +FN:79,(anonymous_3) +FN:92,parseString +FN:124,parseCString +FN:177,parseMI +FN:199,(anonymous_7) +FN:241,(anonymous_8) +FN:249,(anonymous_9) +FN:256,(anonymous_10) +FNF:11 +FNH:0 +FNDA:0,(anonymous_0) +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,parseString +FNDA:0,parseCString +FNDA:0,parseMI +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:3,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:15,0 +DA:16,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:27,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:67,0 +DA:70,0 +DA:74,0 +DA:75,0 +DA:80,0 +DA:81,0 +DA:86,0 +DA:87,0 +DA:88,0 +DA:89,0 +DA:90,0 +DA:93,0 +DA:94,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:102,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:110,0 +DA:111,0 +DA:115,0 +DA:116,0 +DA:118,0 +DA:121,0 +DA:125,0 +DA:126,0 +DA:128,0 +DA:129,0 +DA:131,0 +DA:133,0 +DA:134,0 +DA:135,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:140,0 +DA:141,0 +DA:142,0 +DA:143,0 +DA:144,0 +DA:145,0 +DA:146,0 +DA:147,0 +DA:148,0 +DA:149,0 +DA:150,0 +DA:151,0 +DA:152,0 +DA:153,0 +DA:154,0 +DA:155,0 +DA:156,0 +DA:157,0 +DA:158,0 +DA:159,0 +DA:161,0 +DA:163,0 +DA:164,0 +DA:165,0 +DA:167,0 +DA:168,0 +DA:170,0 +DA:174,0 +DA:177,0 +DA:179,0 +DA:182,0 +DA:188,0 +DA:199,0 +DA:200,0 +DA:201,0 +DA:202,0 +DA:203,0 +DA:204,0 +DA:205,0 +DA:206,0 +DA:207,0 +DA:208,0 +DA:209,0 +DA:212,0 +DA:213,0 +DA:214,0 +DA:215,0 +DA:216,0 +DA:217,0 +DA:218,0 +DA:220,0 +DA:221,0 +DA:225,0 +DA:226,0 +DA:227,0 +DA:228,0 +DA:229,0 +DA:230,0 +DA:232,0 +DA:233,0 +DA:236,0 +DA:238,0 +DA:241,0 +DA:242,0 +DA:243,0 +DA:244,0 +DA:245,0 +DA:249,0 +DA:250,0 +DA:251,0 +DA:252,0 +DA:256,0 +DA:257,0 +DA:258,0 +DA:259,0 +DA:265,0 +DA:266,0 +DA:268,0 +DA:269,0 +DA:272,0 +DA:273,0 +DA:274,0 +DA:275,0 +DA:282,0 +DA:283,0 +DA:285,0 +DA:286,0 +DA:287,0 +DA:288,0 +DA:289,0 +DA:294,0 +DA:297,0 +DA:300,0 +DA:301,0 +DA:302,0 +DA:303,0 +DA:305,0 +DA:310,0 +DA:311,0 +DA:313,0 +DA:316,0 +LF:182 +LH:0 +BRDA:15,0,0,0 +BRDA:15,0,1,0 +BRDA:23,1,0,0 +BRDA:23,1,1,0 +BRDA:31,2,0,0 +BRDA:31,2,1,0 +BRDA:33,3,0,0 +BRDA:33,3,1,0 +BRDA:33,4,0,0 +BRDA:33,4,1,0 +BRDA:38,5,0,0 +BRDA:38,5,1,0 +BRDA:42,6,0,0 +BRDA:42,6,1,0 +BRDA:44,7,0,0 +BRDA:44,7,1,0 +BRDA:50,8,0,0 +BRDA:50,8,1,0 +BRDA:55,9,0,0 +BRDA:55,9,1,0 +BRDA:60,10,0,0 +BRDA:60,10,1,0 +BRDA:60,11,0,0 +BRDA:60,11,1,0 +BRDA:60,11,2,0 +BRDA:60,11,3,0 +BRDA:62,12,0,0 +BRDA:62,12,1,0 +BRDA:74,13,0,0 +BRDA:74,13,1,0 +BRDA:80,14,0,0 +BRDA:80,14,1,0 +BRDA:93,15,0,0 +BRDA:93,15,1,0 +BRDA:103,16,0,0 +BRDA:103,16,1,0 +BRDA:105,17,0,0 +BRDA:105,17,1,0 +BRDA:107,18,0,0 +BRDA:107,18,1,0 +BRDA:128,19,0,0 +BRDA:128,19,1,0 +BRDA:128,20,0,0 +BRDA:128,20,1,0 +BRDA:135,21,0,0 +BRDA:135,21,1,0 +BRDA:137,22,0,0 +BRDA:137,22,1,0 +BRDA:139,23,0,0 +BRDA:139,23,1,0 +BRDA:141,24,0,0 +BRDA:141,24,1,0 +BRDA:143,25,0,0 +BRDA:143,25,1,0 +BRDA:145,26,0,0 +BRDA:145,26,1,0 +BRDA:147,27,0,0 +BRDA:147,27,1,0 +BRDA:149,28,0,0 +BRDA:149,28,1,0 +BRDA:151,29,0,0 +BRDA:151,29,1,0 +BRDA:153,30,0,0 +BRDA:153,30,1,0 +BRDA:155,31,0,0 +BRDA:155,31,1,0 +BRDA:157,32,0,0 +BRDA:157,32,1,0 +BRDA:164,33,0,0 +BRDA:164,33,1,0 +BRDA:167,34,0,0 +BRDA:167,34,1,0 +BRDA:200,35,0,0 +BRDA:200,35,1,0 +BRDA:204,36,0,0 +BRDA:204,36,1,0 +BRDA:204,37,0,0 +BRDA:204,37,1,0 +BRDA:207,38,0,0 +BRDA:207,38,1,0 +BRDA:207,39,0,0 +BRDA:207,39,1,0 +BRDA:212,40,0,0 +BRDA:212,40,1,0 +BRDA:214,41,0,0 +BRDA:214,41,1,0 +BRDA:226,42,0,0 +BRDA:226,42,1,0 +BRDA:236,43,0,0 +BRDA:236,43,1,0 +BRDA:243,44,0,0 +BRDA:243,44,1,0 +BRDA:250,45,0,0 +BRDA:250,45,1,0 +BRDA:257,46,0,0 +BRDA:257,46,1,0 +BRDA:268,47,0,0 +BRDA:268,47,1,0 +BRDA:268,48,0,0 +BRDA:268,48,1,0 +BRDA:268,48,2,0 +BRDA:272,49,0,0 +BRDA:272,49,1,0 +BRDA:286,50,0,0 +BRDA:286,50,1,0 +BRDA:300,51,0,0 +BRDA:300,51,1,0 +BRDA:302,52,0,0 +BRDA:302,52,1,0 +BRDA:302,53,0,0 +BRDA:302,53,1,0 +BRDA:316,54,0,0 +BRDA:316,54,1,0 +BRF:113 +BRH:0 +end_of_record +TN: +SF:src/backend/symbols.ts +FN:38,(anonymous_9) +FN:43,(anonymous_10) +FN:45,(anonymous_11) +FN:112,(anonymous_12) +FN:114,(anonymous_13) +FN:124,(anonymous_14) +FN:125,(anonymous_15) +FN:128,(anonymous_16) +FN:130,(anonymous_17) +FN:134,(anonymous_18) +FN:136,(anonymous_19) +FN:143,(anonymous_20) +FN:145,(anonymous_21) +FN:156,(anonymous_22) +FNF:14 +FNH:0 +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:16,0 +DA:35,0 +DA:36,0 +DA:39,0 +DA:40,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:51,0 +DA:52,0 +DA:55,0 +DA:60,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:68,0 +DA:69,0 +DA:70,0 +DA:71,0 +DA:73,0 +DA:74,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:81,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:86,0 +DA:87,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:92,0 +DA:97,0 +DA:113,0 +DA:115,0 +DA:119,0 +DA:120,0 +DA:125,0 +DA:129,0 +DA:130,0 +DA:135,0 +DA:137,0 +DA:144,0 +DA:146,0 +DA:151,0 +DA:152,0 +DA:155,0 +DA:157,0 +DA:161,0 +DA:162,0 +DA:165,0 +LF:62 +LH:0 +BRDA:46,0,0,0 +BRDA:46,0,1,0 +BRDA:46,1,0,0 +BRDA:46,1,1,0 +BRDA:51,2,0,0 +BRDA:51,2,1,0 +BRDA:64,3,0,0 +BRDA:64,3,1,0 +BRDA:73,4,0,0 +BRDA:73,4,1,0 +BRDA:73,5,0,0 +BRDA:73,5,1,0 +BRDA:76,6,0,0 +BRDA:76,6,1,0 +BRDA:82,7,0,0 +BRDA:82,7,1,0 +BRDA:83,8,0,0 +BRDA:83,8,1,0 +BRDA:89,9,0,0 +BRDA:89,9,1,0 +BRDA:91,10,0,0 +BRDA:91,10,1,0 +BRDA:104,11,0,0 +BRDA:104,11,1,0 +BRDA:115,12,0,0 +BRDA:115,12,1,0 +BRDA:115,12,2,0 +BRDA:119,13,0,0 +BRDA:119,13,1,0 +BRDA:119,14,0,0 +BRDA:119,14,1,0 +BRDA:130,15,0,0 +BRDA:130,15,1,0 +BRDA:137,16,0,0 +BRDA:137,16,1,0 +BRDA:137,16,2,0 +BRDA:146,17,0,0 +BRDA:146,17,1,0 +BRDA:146,17,2,0 +BRDA:146,17,3,0 +BRDA:151,18,0,0 +BRDA:151,18,1,0 +BRDA:157,19,0,0 +BRDA:157,19,1,0 +BRDA:157,19,2,0 +BRDA:161,20,0,0 +BRDA:161,20,1,0 +BRF:47 +BRH:0 +end_of_record +TN: +SF:src/backend/mi2/mi2.ts +FN:6,escape +FN:14,isPlainOutput +FN:29,(anonymous_18) +FN:36,(anonymous_19) +FN:37,(anonymous_20) +FN:53,(anonymous_21) +FN:56,(anonymous_22) +FN:62,(anonymous_23) +FN:64,(anonymous_24) +FN:70,(anonymous_25) +FN:84,(anonymous_26) +FN:97,(anonymous_27) +FN:99,(anonymous_28) +FN:104,(anonymous_29) +FN:112,(anonymous_30) +FN:114,(anonymous_31) +FN:138,(anonymous_32) +FN:141,(anonymous_33) +FN:145,(anonymous_34) +FN:211,(anonymous_35) +FN:214,(anonymous_36) +FN:217,(anonymous_37) +FN:224,(anonymous_38) +FN:226,(anonymous_39) +FN:229,(anonymous_40) +FN:235,(anonymous_41) +FN:236,(anonymous_42) +FN:238,(anonymous_43) +FN:246,(anonymous_44) +FN:247,(anonymous_45) +FN:249,(anonymous_46) +FN:257,(anonymous_47) +FN:258,(anonymous_48) +FN:261,(anonymous_49) +FN:269,(anonymous_50) +FN:270,(anonymous_51) +FN:273,(anonymous_52) +FN:281,(anonymous_53) +FN:282,(anonymous_54) +FN:284,(anonymous_55) +FN:292,(anonymous_56) +FN:296,(anonymous_57) +FN:297,(anonymous_58) +FN:298,(anonymous_59) +FN:305,(anonymous_60) +FN:315,(anonymous_61) +FN:319,(anonymous_62) +FN:323,(anonymous_63) +FN:324,(anonymous_64) +FN:353,(anonymous_65) +FN:359,(anonymous_66) +FN:380,(anonymous_67) +FN:381,(anonymous_68) +FN:387,(anonymous_69) +FN:396,(anonymous_70) +FN:397,(anonymous_71) +FN:400,(anonymous_72) +FN:426,(anonymous_73) +FN:427,(anonymous_74) +FN:429,(anonymous_75) +FN:432,(anonymous_76) +FN:460,(anonymous_77) +FN:475,(anonymous_79) +FN:490,(anonymous_81) +FN:491,(anonymous_82) +FN:493,(anonymous_83) +FN:501,(anonymous_84) +FN:501,(anonymous_85) +FN:506,(anonymous_86) +FN:510,(anonymous_88) +FN:512,(anonymous_90) +FN:515,(anonymous_91) +FN:515,(anonymous_92) +FN:519,(anonymous_93) +FN:523,(anonymous_95) +FN:527,(anonymous_96) +FN:531,(anonymous_97) +FN:538,(anonymous_98) +FN:545,(anonymous_99) +FN:547,(anonymous_100) +FN:548,(anonymous_101) +FN:564,(anonymous_102) +FNF:82 +FNH:0 +FNDA:0,escape +FNDA:0,isPlainOutput +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:0,(anonymous_48) +FNDA:0,(anonymous_49) +FNDA:0,(anonymous_50) +FNDA:0,(anonymous_51) +FNDA:0,(anonymous_52) +FNDA:0,(anonymous_53) +FNDA:0,(anonymous_54) +FNDA:0,(anonymous_55) +FNDA:0,(anonymous_56) +FNDA:0,(anonymous_57) +FNDA:0,(anonymous_58) +FNDA:0,(anonymous_59) +FNDA:0,(anonymous_60) +FNDA:0,(anonymous_61) +FNDA:0,(anonymous_62) +FNDA:0,(anonymous_63) +FNDA:0,(anonymous_64) +FNDA:0,(anonymous_65) +FNDA:0,(anonymous_66) +FNDA:0,(anonymous_67) +FNDA:0,(anonymous_68) +FNDA:0,(anonymous_69) +FNDA:0,(anonymous_70) +FNDA:0,(anonymous_71) +FNDA:0,(anonymous_72) +FNDA:0,(anonymous_73) +FNDA:0,(anonymous_74) +FNDA:0,(anonymous_75) +FNDA:0,(anonymous_76) +FNDA:0,(anonymous_77) +FNDA:0,(anonymous_79) +FNDA:0,(anonymous_81) +FNDA:0,(anonymous_82) +FNDA:0,(anonymous_83) +FNDA:0,(anonymous_84) +FNDA:0,(anonymous_85) +FNDA:0,(anonymous_86) +FNDA:0,(anonymous_88) +FNDA:0,(anonymous_90) +FNDA:0,(anonymous_91) +FNDA:0,(anonymous_92) +FNDA:0,(anonymous_93) +FNDA:0,(anonymous_95) +FNDA:0,(anonymous_96) +FNDA:0,(anonymous_97) +FNDA:0,(anonymous_98) +FNDA:0,(anonymous_99) +FNDA:0,(anonymous_100) +FNDA:0,(anonymous_101) +FNDA:0,(anonymous_102) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:15,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:24,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:45,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:56,0 +DA:57,0 +DA:60,0 +DA:62,0 +DA:64,0 +DA:65,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:77,0 +DA:78,0 +DA:79,0 +DA:85,0 +DA:86,0 +DA:87,0 +DA:88,0 +DA:89,0 +DA:91,0 +DA:92,0 +DA:93,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:105,0 +DA:106,0 +DA:107,0 +DA:109,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:116,0 +DA:117,0 +DA:120,0 +DA:121,0 +DA:122,0 +DA:125,0 +DA:127,0 +DA:128,0 +DA:129,0 +DA:130,0 +DA:133,0 +DA:134,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:140,0 +DA:141,0 +DA:142,0 +DA:143,0 +DA:145,0 +DA:146,0 +DA:147,0 +DA:148,0 +DA:152,0 +DA:153,0 +DA:154,0 +DA:155,0 +DA:156,0 +DA:157,0 +DA:158,0 +DA:159,0 +DA:160,0 +DA:161,0 +DA:162,0 +DA:163,0 +DA:164,0 +DA:165,0 +DA:166,0 +DA:167,0 +DA:168,0 +DA:169,0 +DA:170,0 +DA:171,0 +DA:173,0 +DA:174,0 +DA:176,0 +DA:178,0 +DA:180,0 +DA:182,0 +DA:183,0 +DA:184,0 +DA:185,0 +DA:186,0 +DA:187,0 +DA:188,0 +DA:189,0 +DA:190,0 +DA:191,0 +DA:192,0 +DA:193,0 +DA:197,0 +DA:200,0 +DA:201,0 +DA:204,0 +DA:205,0 +DA:212,0 +DA:213,0 +DA:214,0 +DA:215,0 +DA:217,0 +DA:218,0 +DA:221,0 +DA:225,0 +DA:226,0 +DA:227,0 +DA:229,0 +DA:230,0 +DA:232,0 +DA:236,0 +DA:237,0 +DA:239,0 +DA:247,0 +DA:248,0 +DA:250,0 +DA:258,0 +DA:259,0 +DA:260,0 +DA:262,0 +DA:270,0 +DA:271,0 +DA:272,0 +DA:274,0 +DA:282,0 +DA:283,0 +DA:285,0 +DA:293,0 +DA:297,0 +DA:298,0 +DA:299,0 +DA:300,0 +DA:301,0 +DA:303,0 +DA:304,0 +DA:306,0 +DA:311,0 +DA:316,0 +DA:320,0 +DA:324,0 +DA:325,0 +DA:327,0 +DA:328,0 +DA:329,0 +DA:331,0 +DA:332,0 +DA:333,0 +DA:339,0 +DA:340,0 +DA:341,0 +DA:346,0 +DA:347,0 +DA:349,0 +DA:352,0 +DA:354,0 +DA:355,0 +DA:356,0 +DA:357,0 +DA:358,0 +DA:360,0 +DA:361,0 +DA:363,0 +DA:369,0 +DA:372,0 +DA:381,0 +DA:382,0 +DA:383,0 +DA:385,0 +DA:386,0 +DA:388,0 +DA:397,0 +DA:398,0 +DA:399,0 +DA:401,0 +DA:402,0 +DA:403,0 +DA:404,0 +DA:405,0 +DA:406,0 +DA:407,0 +DA:408,0 +DA:409,0 +DA:410,0 +DA:412,0 +DA:427,0 +DA:428,0 +DA:430,0 +DA:431,0 +DA:432,0 +DA:433,0 +DA:434,0 +DA:435,0 +DA:436,0 +DA:437,0 +DA:438,0 +DA:439,0 +DA:440,0 +DA:441,0 +DA:443,0 +DA:444,0 +DA:453,0 +DA:461,0 +DA:464,0 +DA:465,0 +DA:466,0 +DA:467,0 +DA:468,0 +DA:469,0 +DA:470,0 +DA:472,0 +DA:476,0 +DA:477,0 +DA:478,0 +DA:479,0 +DA:480,0 +DA:483,0 +DA:484,0 +DA:485,0 +DA:487,0 +DA:491,0 +DA:492,0 +DA:494,0 +DA:501,0 +DA:502,0 +DA:503,0 +DA:507,0 +DA:511,0 +DA:512,0 +DA:515,0 +DA:516,0 +DA:520,0 +DA:524,0 +DA:528,0 +DA:532,0 +DA:533,0 +DA:535,0 +DA:539,0 +DA:540,0 +DA:542,0 +DA:546,0 +DA:547,0 +DA:548,0 +DA:549,0 +DA:550,0 +DA:551,0 +DA:552,0 +DA:554,0 +DA:557,0 +DA:560,0 +DA:565,0 +LF:278 +LH:0 +BRDA:40,0,0,0 +BRDA:40,0,1,0 +BRDA:71,1,0,0 +BRDA:71,1,1,0 +BRDA:73,2,0,0 +BRDA:73,2,1,0 +BRDA:77,3,0,0 +BRDA:77,3,1,0 +BRDA:78,4,0,0 +BRDA:78,4,1,0 +BRDA:85,5,0,0 +BRDA:85,5,1,0 +BRDA:87,6,0,0 +BRDA:87,6,1,0 +BRDA:91,7,0,0 +BRDA:91,7,1,0 +BRDA:105,8,0,0 +BRDA:105,8,1,0 +BRDA:115,9,0,0 +BRDA:115,9,1,0 +BRDA:116,10,0,0 +BRDA:116,10,1,0 +BRDA:121,11,0,0 +BRDA:121,11,1,0 +BRDA:127,12,0,0 +BRDA:127,12,1,0 +BRDA:127,13,0,0 +BRDA:127,13,1,0 +BRDA:133,14,0,0 +BRDA:133,14,1,0 +BRDA:133,15,0,0 +BRDA:133,15,1,0 +BRDA:133,15,2,0 +BRDA:134,16,0,0 +BRDA:134,16,1,0 +BRDA:137,17,0,0 +BRDA:137,17,1,0 +BRDA:139,18,0,0 +BRDA:139,18,1,0 +BRDA:140,19,0,0 +BRDA:140,19,1,0 +BRDA:146,20,0,0 +BRDA:146,20,1,0 +BRDA:153,21,0,0 +BRDA:153,21,1,0 +BRDA:155,22,0,0 +BRDA:155,22,1,0 +BRDA:157,23,0,0 +BRDA:157,23,1,0 +BRDA:159,24,0,0 +BRDA:159,24,1,0 +BRDA:161,25,0,0 +BRDA:161,25,1,0 +BRDA:163,26,0,0 +BRDA:163,26,1,0 +BRDA:165,27,0,0 +BRDA:165,27,1,0 +BRDA:167,28,0,0 +BRDA:167,28,1,0 +BRDA:169,29,0,0 +BRDA:169,29,1,0 +BRDA:173,30,0,0 +BRDA:173,30,1,0 +BRDA:182,31,0,0 +BRDA:182,31,1,0 +BRDA:183,32,0,0 +BRDA:183,32,1,0 +BRDA:187,33,0,0 +BRDA:187,33,1,0 +BRDA:191,34,0,0 +BRDA:191,34,1,0 +BRDA:200,35,0,0 +BRDA:200,35,1,0 +BRDA:200,36,0,0 +BRDA:200,36,1,0 +BRDA:200,36,2,0 +BRDA:204,37,0,0 +BRDA:204,37,1,0 +BRDA:211,38,0,0 +BRDA:212,39,0,0 +BRDA:212,39,1,0 +BRDA:259,40,0,0 +BRDA:259,40,1,0 +BRDA:271,41,0,0 +BRDA:271,41,1,0 +BRDA:299,42,0,0 +BRDA:299,42,1,0 +BRDA:327,43,0,0 +BRDA:327,43,1,0 +BRDA:328,44,0,0 +BRDA:328,44,1,0 +BRDA:332,45,0,0 +BRDA:332,45,1,0 +BRDA:340,46,0,0 +BRDA:340,46,1,0 +BRDA:346,47,0,0 +BRDA:346,47,1,0 +BRDA:354,48,0,0 +BRDA:354,48,1,0 +BRDA:357,49,0,0 +BRDA:357,49,1,0 +BRDA:360,50,0,0 +BRDA:360,50,1,0 +BRDA:382,51,0,0 +BRDA:382,51,1,0 +BRDA:409,52,0,0 +BRDA:409,52,1,0 +BRDA:440,53,0,0 +BRDA:440,53,1,0 +BRDA:448,54,0,0 +BRDA:448,54,1,0 +BRDA:479,55,0,0 +BRDA:479,55,1,0 +BRDA:501,56,0,0 +BRDA:512,57,0,0 +BRDA:512,57,1,0 +BRDA:515,58,0,0 +BRDA:528,59,0,0 +BRDA:528,59,1,0 +BRDA:532,60,0,0 +BRDA:532,60,1,0 +BRDA:539,61,0,0 +BRDA:539,61,1,0 +BRDA:545,62,0,0 +BRDA:549,63,0,0 +BRDA:549,63,1,0 +BRDA:549,64,0,0 +BRDA:549,64,1,0 +BRDA:549,64,2,0 +BRDA:550,65,0,0 +BRDA:550,65,1,0 +BRDA:554,66,0,0 +BRDA:554,66,1,0 +BRF:133 +BRH:0 +end_of_record +TN: +SF:src/backend/mi2/types.ts +FN:17,(anonymous_0) +FN:30,(anonymous_1) +FN:40,(anonymous_2) +FN:48,(anonymous_3) +FN:64,(anonymous_4) +FN:66,(anonymous_5) +FN:69,(anonymous_6) +FN:72,(anonymous_7) +FN:77,(anonymous_8) +FNF:9 +FNH:0 +FNDA:0,(anonymous_0) +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,0 +DA:3,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:41,0 +DA:49,0 +DA:60,0 +DA:65,0 +DA:66,0 +DA:68,0 +DA:69,0 +DA:71,0 +DA:72,0 +DA:74,0 +DA:78,0 +DA:82,0 +DA:83,0 +LF:31 +LH:0 +BRDA:32,0,0,0 +BRDA:32,0,1,0 +BRDA:42,1,0,0 +BRDA:42,1,1,0 +BRDA:42,1,2,0 +BRDA:42,1,3,0 +BRDA:42,1,4,0 +BRDA:51,2,0,0 +BRDA:51,2,1,0 +BRDA:52,3,0,0 +BRDA:52,3,1,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/frontend/configprovider.ts +FN:4,(anonymous_16) +FN:6,(anonymous_17) +FNF:2 +FNH:0 +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +DA:1,0 +DA:3,0 +DA:11,0 +DA:12,0 +LF:4 +LH:0 +BRDA:11,0,0,0 +BRDA:11,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/frontend/disassembly_content_provider.ts +FN:5,(anonymous_9) +FN:6,(anonymous_10) +FN:11,(anonymous_11) +FN:14,(anonymous_12) +FN:19,(anonymous_13) +FN:27,(anonymous_14) +FNF:6 +FNH:0 +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:28,0 +DA:29,0 +DA:31,0 +LF:16 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/frontend/disassembly_tree_provider.ts +FN:3,(anonymous_9) +FN:8,(anonymous_10) +FN:12,(anonymous_11) +FN:34,(anonymous_12) +FN:38,(anonymous_13) +FN:43,(anonymous_14) +FN:47,(anonymous_15) +FNF:7 +FNH:0 +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:9,0 +DA:13,0 +DA:14,0 +DA:17,0 +DA:18,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:31,0 +DA:35,0 +DA:39,0 +DA:40,0 +DA:44,0 +DA:48,0 +LF:19 +LH:0 +BRDA:13,0,0,0 +BRDA:13,0,1,0 +BRDA:23,1,0,0 +BRDA:23,1,1,0 +BRDA:28,2,0,0 +BRDA:28,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/frontend/memory_content_provider.ts +FN:4,(anonymous_9) +FN:22,(anonymous_10) +FN:23,(anonymous_11) +FN:35,(anonymous_12) +FN:76,(anonymous_13) +FN:86,(anonymous_14) +FN:90,(anonymous_15) +FN:107,(anonymous_16) +FN:118,(anonymous_17) +FN:136,(anonymous_18) +FNF:10 +FNH:0 +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:32,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:41,0 +DA:42,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:67,0 +DA:68,0 +DA:69,0 +DA:71,0 +DA:72,0 +DA:74,0 +DA:77,0 +DA:80,0 +DA:87,0 +DA:91,0 +DA:92,0 +DA:95,0 +DA:96,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:104,0 +DA:108,0 +DA:109,0 +DA:110,0 +DA:111,0 +DA:113,0 +DA:115,0 +DA:119,0 +DA:120,0 +DA:121,0 +DA:123,0 +DA:124,0 +DA:125,0 +DA:127,0 +DA:128,0 +DA:129,0 +DA:130,0 +DA:133,0 +DA:137,0 +DA:138,0 +DA:142,0 +DA:143,0 +DA:146,0 +DA:147,0 +DA:149,0 +DA:150,0 +DA:151,0 +DA:154,0 +DA:155,0 +DA:156,0 +LF:82 +LH:0 +BRDA:25,0,0,0 +BRDA:25,0,1,0 +BRDA:28,1,0,0 +BRDA:28,1,1,0 +BRDA:33,2,0,0 +BRDA:33,2,1,0 +BRDA:54,3,0,0 +BRDA:54,3,1,0 +BRDA:54,4,0,0 +BRDA:54,4,1,0 +BRDA:54,4,2,0 +BRDA:58,5,0,0 +BRDA:58,5,1,0 +BRDA:58,6,0,0 +BRDA:58,6,1,0 +BRDA:91,7,0,0 +BRDA:91,7,1,0 +BRDA:91,8,0,0 +BRDA:91,8,1,0 +BRDA:98,9,0,0 +BRDA:98,9,1,0 +BRDA:98,10,0,0 +BRDA:98,10,1,0 +BRDA:100,11,0,0 +BRDA:100,11,1,0 +BRDA:107,12,0,0 +BRDA:110,13,0,0 +BRDA:110,13,1,0 +BRDA:121,14,0,0 +BRDA:121,14,1,0 +BRDA:124,15,0,0 +BRDA:124,15,1,0 +BRDA:125,16,0,0 +BRDA:125,16,1,0 +BRDA:128,17,0,0 +BRDA:128,17,1,0 +BRDA:129,18,0,0 +BRDA:129,18,1,0 +BRDA:138,19,0,0 +BRDA:138,19,1,0 +BRDA:139,20,0,0 +BRDA:139,20,1,0 +BRDA:149,21,0,0 +BRDA:149,21,1,0 +BRDA:149,22,0,0 +BRDA:149,22,1,0 +BRF:46 +BRH:0 +end_of_record +TN: +SF:src/frontend/memory_tree_provider.ts +FN:3,(anonymous_9) +FN:8,(anonymous_10) +FN:12,(anonymous_11) +FN:16,(anonymous_12) +FN:33,(anonymous_13) +FN:34,(anonymous_14) +FN:45,(anonymous_15) +FN:49,(anonymous_16) +FN:57,(anonymous_17) +FN:60,(anonymous_18) +FN:65,(anonymous_19) +FN:70,(anonymous_20) +FN:75,(anonymous_21) +FNF:13 +FNH:0 +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:9,0 +DA:13,0 +DA:17,0 +DA:18,0 +DA:21,0 +DA:22,0 +DA:25,0 +DA:26,0 +DA:30,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:41,0 +DA:46,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:66,0 +DA:67,0 +DA:71,0 +DA:72,0 +DA:76,0 +DA:77,0 +LF:33 +LH:0 +BRDA:17,0,0,0 +BRDA:17,0,1,0 +BRDA:21,1,0,0 +BRDA:21,1,1,0 +BRDA:51,2,0,0 +BRDA:51,2,1,0 +BRDA:59,3,0,0 +BRDA:59,3,1,0 +BRDA:71,4,0,0 +BRDA:71,4,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/frontend/peripheral.ts +FN:12,(anonymous_16) +FN:19,(anonymous_17) +FN:34,(anonymous_18) +FN:55,(anonymous_19) +FN:57,(anonymous_20) +FN:61,(anonymous_21) +FN:65,(anonymous_22) +FN:69,(anonymous_23) +FN:73,(anonymous_24) +FN:77,(anonymous_25) +FN:81,(anonymous_26) +FN:86,parseInteger +FN:102,parseDimIndex +FN:104,(anonymous_29) +FN:112,(anonymous_30) +FN:140,(anonymous_31) +FN:162,(anonymous_32) +FN:173,(anonymous_33) +FN:183,(anonymous_34) +FN:187,(anonymous_35) +FN:189,(anonymous_36) +FN:192,(anonymous_37) +FN:194,(anonymous_38) +FN:197,(anonymous_39) +FN:205,(anonymous_40) +FN:209,(anonymous_41) +FN:213,(anonymous_42) +FN:214,(anonymous_43) +FN:222,(anonymous_44) +FN:224,(anonymous_45) +FN:227,(anonymous_46) +FN:237,(anonymous_47) +FN:241,(anonymous_48) +FN:250,(anonymous_49) +FN:256,(anonymous_50) +FN:260,(anonymous_51) +FN:278,(anonymous_52) +FN:289,(anonymous_53) +FN:299,(anonymous_54) +FN:303,(anonymous_55) +FN:305,(anonymous_56) +FN:308,(anonymous_57) +FN:310,(anonymous_58) +FN:313,(anonymous_59) +FN:317,(anonymous_60) +FN:321,(anonymous_61) +FN:325,(anonymous_62) +FN:329,(anonymous_63) +FN:338,(anonymous_64) +FN:344,(anonymous_65) +FN:348,(anonymous_66) +FN:371,(anonymous_67) +FN:388,(anonymous_68) +FN:392,(anonymous_69) +FN:396,(anonymous_70) +FN:397,(anonymous_71) +FN:411,(anonymous_72) +FN:446,(anonymous_73) +FN:450,(anonymous_74) +FN:452,(anonymous_75) +FN:455,(anonymous_76) +FN:457,(anonymous_77) +FN:460,(anonymous_78) +FN:464,(anonymous_79) +FN:475,(anonymous_80) +FN:476,(anonymous_81) +FN:479,(anonymous_82) +FN:500,(anonymous_83) +FN:515,(anonymous_84) +FN:519,(anonymous_85) +FN:521,(anonymous_86) +FN:522,(anonymous_87) +FN:531,(anonymous_88) +FN:552,(anonymous_89) +FN:556,(anonymous_90) +FN:565,(anonymous_91) +FN:571,(anonymous_92) +FN:576,(anonymous_93) +FN:596,(anonymous_94) +FN:629,(anonymous_95) +FN:677,(anonymous_96) +FN:678,(anonymous_97) +FN:681,(anonymous_98) +FN:692,(anonymous_99) +FN:703,(anonymous_100) +FN:719,(anonymous_101) +FN:723,(anonymous_102) +FN:730,(anonymous_103) +FN:739,(anonymous_104) +FN:748,(anonymous_105) +FN:752,(anonymous_106) +FN:754,(anonymous_107) +FN:760,(anonymous_108) +FN:762,(anonymous_109) +FN:792,(anonymous_110) +FN:845,(anonymous_111) +FN:847,(anonymous_112) +FN:904,(anonymous_113) +FN:908,(anonymous_114) +FN:913,(anonymous_115) +FN:973,(anonymous_116) +FN:1007,(anonymous_117) +FN:1008,(anonymous_118) +FN:1009,(anonymous_119) +FN:1013,(anonymous_120) +FN:1035,(anonymous_121) +FN:1054,(anonymous_122) +FN:1075,(anonymous_123) +FN:1077,(anonymous_124) +FN:1081,(anonymous_125) +FN:1085,(anonymous_126) +FN:1093,(anonymous_127) +FN:1095,(anonymous_128) +FN:1112,(anonymous_129) +FN:1116,(anonymous_131) +FN:1117,(anonymous_132) +FN:1117,(anonymous_133) +FN:1121,(anonymous_134) +FN:1139,(anonymous_135) +FN:1145,(anonymous_137) +FN:1153,(anonymous_138) +FN:1159,(anonymous_139) +FN:1163,(anonymous_140) +FN:1170,(anonymous_141) +FN:1176,(anonymous_142) +FN:1180,(anonymous_143) +FNF:126 +FNH:0 +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,parseInteger +FNDA:0,parseDimIndex +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:0,(anonymous_48) +FNDA:0,(anonymous_49) +FNDA:0,(anonymous_50) +FNDA:0,(anonymous_51) +FNDA:0,(anonymous_52) +FNDA:0,(anonymous_53) +FNDA:0,(anonymous_54) +FNDA:0,(anonymous_55) +FNDA:0,(anonymous_56) +FNDA:0,(anonymous_57) +FNDA:0,(anonymous_58) +FNDA:0,(anonymous_59) +FNDA:0,(anonymous_60) +FNDA:0,(anonymous_61) +FNDA:0,(anonymous_62) +FNDA:0,(anonymous_63) +FNDA:0,(anonymous_64) +FNDA:0,(anonymous_65) +FNDA:0,(anonymous_66) +FNDA:0,(anonymous_67) +FNDA:0,(anonymous_68) +FNDA:0,(anonymous_69) +FNDA:0,(anonymous_70) +FNDA:0,(anonymous_71) +FNDA:0,(anonymous_72) +FNDA:0,(anonymous_73) +FNDA:0,(anonymous_74) +FNDA:0,(anonymous_75) +FNDA:0,(anonymous_76) +FNDA:0,(anonymous_77) +FNDA:0,(anonymous_78) +FNDA:0,(anonymous_79) +FNDA:0,(anonymous_80) +FNDA:0,(anonymous_81) +FNDA:0,(anonymous_82) +FNDA:0,(anonymous_83) +FNDA:0,(anonymous_84) +FNDA:0,(anonymous_85) +FNDA:0,(anonymous_86) +FNDA:0,(anonymous_87) +FNDA:0,(anonymous_88) +FNDA:0,(anonymous_89) +FNDA:0,(anonymous_90) +FNDA:0,(anonymous_91) +FNDA:0,(anonymous_92) +FNDA:0,(anonymous_93) +FNDA:0,(anonymous_94) +FNDA:0,(anonymous_95) +FNDA:0,(anonymous_96) +FNDA:0,(anonymous_97) +FNDA:0,(anonymous_98) +FNDA:0,(anonymous_99) +FNDA:0,(anonymous_100) +FNDA:0,(anonymous_101) +FNDA:0,(anonymous_102) +FNDA:0,(anonymous_103) +FNDA:0,(anonymous_104) +FNDA:0,(anonymous_105) +FNDA:0,(anonymous_106) +FNDA:0,(anonymous_107) +FNDA:0,(anonymous_108) +FNDA:0,(anonymous_109) +FNDA:0,(anonymous_110) +FNDA:0,(anonymous_111) +FNDA:0,(anonymous_112) +FNDA:0,(anonymous_113) +FNDA:0,(anonymous_114) +FNDA:0,(anonymous_115) +FNDA:0,(anonymous_116) +FNDA:0,(anonymous_117) +FNDA:0,(anonymous_118) +FNDA:0,(anonymous_119) +FNDA:0,(anonymous_120) +FNDA:0,(anonymous_121) +FNDA:0,(anonymous_122) +FNDA:0,(anonymous_123) +FNDA:0,(anonymous_124) +FNDA:0,(anonymous_125) +FNDA:0,(anonymous_126) +FNDA:0,(anonymous_127) +FNDA:0,(anonymous_128) +FNDA:0,(anonymous_129) +FNDA:0,(anonymous_131) +FNDA:0,(anonymous_132) +FNDA:0,(anonymous_133) +FNDA:0,(anonymous_134) +FNDA:0,(anonymous_135) +FNDA:0,(anonymous_137) +FNDA:0,(anonymous_138) +FNDA:0,(anonymous_139) +FNDA:0,(anonymous_140) +FNDA:0,(anonymous_141) +FNDA:0,(anonymous_142) +FNDA:0,(anonymous_143) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:25,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:41,0 +DA:46,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:55,0 +DA:58,0 +DA:62,0 +DA:66,0 +DA:70,0 +DA:74,0 +DA:78,0 +DA:82,0 +DA:87,0 +DA:88,0 +DA:90,0 +DA:91,0 +DA:93,0 +DA:94,0 +DA:96,0 +DA:97,0 +DA:99,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:106,0 +DA:108,0 +DA:111,0 +DA:112,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:117,0 +DA:118,0 +DA:119,0 +DA:121,0 +DA:124,0 +DA:125,0 +DA:126,0 +DA:127,0 +DA:129,0 +DA:130,0 +DA:131,0 +DA:133,0 +DA:136,0 +DA:141,0 +DA:142,0 +DA:143,0 +DA:151,0 +DA:159,0 +DA:163,0 +DA:164,0 +DA:165,0 +DA:166,0 +DA:167,0 +DA:168,0 +DA:169,0 +DA:170,0 +DA:174,0 +DA:175,0 +DA:184,0 +DA:188,0 +DA:189,0 +DA:193,0 +DA:194,0 +DA:198,0 +DA:199,0 +DA:201,0 +DA:206,0 +DA:210,0 +DA:214,0 +DA:215,0 +DA:216,0 +DA:223,0 +DA:224,0 +DA:225,0 +DA:228,0 +DA:232,0 +DA:238,0 +DA:242,0 +DA:243,0 +DA:244,0 +DA:250,0 +DA:251,0 +DA:253,0 +DA:257,0 +DA:258,0 +DA:260,0 +DA:261,0 +DA:269,0 +DA:276,0 +DA:278,0 +DA:279,0 +DA:280,0 +DA:281,0 +DA:282,0 +DA:283,0 +DA:284,0 +DA:285,0 +DA:286,0 +DA:290,0 +DA:291,0 +DA:300,0 +DA:304,0 +DA:305,0 +DA:309,0 +DA:310,0 +DA:314,0 +DA:318,0 +DA:322,0 +DA:326,0 +DA:330,0 +DA:331,0 +DA:332,0 +DA:338,0 +DA:339,0 +DA:341,0 +DA:345,0 +DA:346,0 +DA:348,0 +DA:349,0 +DA:357,0 +DA:369,0 +DA:371,0 +DA:372,0 +DA:373,0 +DA:374,0 +DA:375,0 +DA:376,0 +DA:377,0 +DA:378,0 +DA:379,0 +DA:380,0 +DA:381,0 +DA:382,0 +DA:383,0 +DA:384,0 +DA:385,0 +DA:389,0 +DA:393,0 +DA:397,0 +DA:398,0 +DA:399,0 +DA:400,0 +DA:404,0 +DA:405,0 +DA:406,0 +DA:407,0 +DA:412,0 +DA:413,0 +DA:414,0 +DA:415,0 +DA:416,0 +DA:419,0 +DA:420,0 +DA:421,0 +DA:423,0 +DA:425,0 +DA:426,0 +DA:428,0 +DA:429,0 +DA:431,0 +DA:432,0 +DA:437,0 +DA:443,0 +DA:447,0 +DA:451,0 +DA:452,0 +DA:456,0 +DA:457,0 +DA:461,0 +DA:465,0 +DA:467,0 +DA:469,0 +DA:471,0 +DA:476,0 +DA:477,0 +DA:481,0 +DA:482,0 +DA:483,0 +DA:484,0 +DA:485,0 +DA:486,0 +DA:487,0 +DA:488,0 +DA:493,0 +DA:495,0 +DA:501,0 +DA:502,0 +DA:503,0 +DA:505,0 +DA:506,0 +DA:507,0 +DA:508,0 +DA:509,0 +DA:510,0 +DA:512,0 +DA:515,0 +DA:516,0 +DA:520,0 +DA:524,0 +DA:532,0 +DA:533,0 +DA:534,0 +DA:536,0 +DA:538,0 +DA:539,0 +DA:541,0 +DA:542,0 +DA:544,0 +DA:545,0 +DA:547,0 +DA:552,0 +DA:553,0 +DA:557,0 +DA:558,0 +DA:559,0 +DA:565,0 +DA:566,0 +DA:568,0 +DA:572,0 +DA:573,0 +DA:575,0 +DA:576,0 +DA:578,0 +DA:586,0 +DA:596,0 +DA:597,0 +DA:598,0 +DA:599,0 +DA:600,0 +DA:601,0 +DA:603,0 +DA:604,0 +DA:605,0 +DA:606,0 +DA:607,0 +DA:609,0 +DA:612,0 +DA:615,0 +DA:616,0 +DA:617,0 +DA:618,0 +DA:619,0 +DA:620,0 +DA:621,0 +DA:622,0 +DA:626,0 +DA:630,0 +DA:631,0 +DA:632,0 +DA:633,0 +DA:634,0 +DA:636,0 +DA:638,0 +DA:639,0 +DA:640,0 +DA:641,0 +DA:643,0 +DA:644,0 +DA:646,0 +DA:647,0 +DA:649,0 +DA:650,0 +DA:652,0 +DA:653,0 +DA:655,0 +DA:659,0 +DA:662,0 +DA:663,0 +DA:664,0 +DA:666,0 +DA:670,0 +DA:671,0 +DA:674,0 +DA:678,0 +DA:679,0 +DA:680,0 +DA:682,0 +DA:683,0 +DA:685,0 +DA:686,0 +DA:690,0 +DA:693,0 +DA:694,0 +DA:695,0 +DA:697,0 +DA:704,0 +DA:705,0 +DA:707,0 +DA:709,0 +DA:711,0 +DA:713,0 +DA:720,0 +DA:724,0 +DA:725,0 +DA:727,0 +DA:731,0 +DA:739,0 +DA:740,0 +DA:741,0 +DA:742,0 +DA:743,0 +DA:744,0 +DA:749,0 +DA:753,0 +DA:754,0 +DA:755,0 +DA:757,0 +DA:761,0 +DA:762,0 +DA:765,0 +DA:767,0 +DA:768,0 +DA:769,0 +DA:770,0 +DA:771,0 +DA:772,0 +DA:773,0 +DA:774,0 +DA:775,0 +DA:776,0 +DA:777,0 +DA:778,0 +DA:779,0 +DA:780,0 +DA:781,0 +DA:782,0 +DA:784,0 +DA:789,0 +DA:790,0 +DA:791,0 +DA:792,0 +DA:793,0 +DA:794,0 +DA:795,0 +DA:796,0 +DA:797,0 +DA:802,0 +DA:810,0 +DA:811,0 +DA:812,0 +DA:816,0 +DA:817,0 +DA:818,0 +DA:819,0 +DA:820,0 +DA:822,0 +DA:823,0 +DA:826,0 +DA:827,0 +DA:828,0 +DA:829,0 +DA:830,0 +DA:839,0 +DA:842,0 +DA:846,0 +DA:847,0 +DA:848,0 +DA:849,0 +DA:850,0 +DA:852,0 +DA:853,0 +DA:855,0 +DA:856,0 +DA:858,0 +DA:859,0 +DA:862,0 +DA:863,0 +DA:864,0 +DA:868,0 +DA:869,0 +DA:870,0 +DA:871,0 +DA:872,0 +DA:874,0 +DA:875,0 +DA:878,0 +DA:879,0 +DA:880,0 +DA:881,0 +DA:882,0 +DA:887,0 +DA:888,0 +DA:890,0 +DA:893,0 +DA:898,0 +DA:899,0 +DA:901,0 +DA:904,0 +DA:905,0 +DA:909,0 +DA:910,0 +DA:911,0 +DA:913,0 +DA:914,0 +DA:915,0 +DA:916,0 +DA:918,0 +DA:919,0 +DA:921,0 +DA:922,0 +DA:924,0 +DA:925,0 +DA:928,0 +DA:929,0 +DA:930,0 +DA:934,0 +DA:935,0 +DA:936,0 +DA:937,0 +DA:938,0 +DA:940,0 +DA:941,0 +DA:944,0 +DA:945,0 +DA:946,0 +DA:947,0 +DA:948,0 +DA:953,0 +DA:954,0 +DA:956,0 +DA:959,0 +DA:964,0 +DA:965,0 +DA:966,0 +DA:970,0 +DA:974,0 +DA:975,0 +DA:982,0 +DA:983,0 +DA:985,0 +DA:986,0 +DA:988,0 +DA:989,0 +DA:991,0 +DA:992,0 +DA:995,0 +DA:997,0 +DA:998,0 +DA:1000,0 +DA:1001,0 +DA:1004,0 +DA:1008,0 +DA:1009,0 +DA:1010,0 +DA:1011,0 +DA:1013,0 +DA:1014,0 +DA:1015,0 +DA:1017,0 +DA:1018,0 +DA:1019,0 +DA:1025,0 +DA:1026,0 +DA:1028,0 +DA:1029,0 +DA:1031,0 +DA:1032,0 +DA:1035,0 +DA:1036,0 +DA:1037,0 +DA:1041,0 +DA:1042,0 +DA:1043,0 +DA:1044,0 +DA:1045,0 +DA:1049,0 +DA:1050,0 +DA:1051,0 +DA:1054,0 +DA:1055,0 +DA:1066,0 +DA:1068,0 +DA:1076,0 +DA:1077,0 +DA:1078,0 +DA:1082,0 +DA:1086,0 +DA:1087,0 +DA:1088,0 +DA:1091,0 +DA:1092,0 +DA:1093,0 +DA:1095,0 +DA:1098,0 +DA:1099,0 +DA:1102,0 +DA:1113,0 +DA:1114,0 +DA:1115,0 +DA:1116,0 +DA:1117,0 +DA:1118,0 +DA:1119,0 +DA:1120,0 +DA:1121,0 +DA:1122,0 +DA:1123,0 +DA:1124,0 +DA:1125,0 +DA:1130,0 +DA:1131,0 +DA:1133,0 +DA:1140,0 +DA:1141,0 +DA:1142,0 +DA:1144,0 +DA:1145,0 +DA:1149,0 +DA:1154,0 +DA:1155,0 +DA:1156,0 +DA:1160,0 +DA:1164,0 +DA:1165,0 +DA:1166,0 +DA:1167,0 +DA:1171,0 +DA:1172,0 +DA:1173,0 +DA:1177,0 +LF:543 +LH:0 +BRDA:12,0,0,0 +BRDA:12,0,1,0 +BRDA:19,1,0,0 +BRDA:19,1,1,0 +BRDA:46,2,0,0 +BRDA:46,2,1,0 +BRDA:46,3,0,0 +BRDA:46,3,1,0 +BRDA:87,4,0,0 +BRDA:87,4,1,0 +BRDA:90,5,0,0 +BRDA:90,5,1,0 +BRDA:93,6,0,0 +BRDA:93,6,1,0 +BRDA:96,7,0,0 +BRDA:96,7,1,0 +BRDA:103,8,0,0 +BRDA:103,8,1,0 +BRDA:105,9,0,0 +BRDA:105,9,1,0 +BRDA:111,10,0,0 +BRDA:111,10,1,0 +BRDA:114,11,0,0 +BRDA:114,11,1,0 +BRDA:124,12,0,0 +BRDA:124,12,1,0 +BRDA:126,13,0,0 +BRDA:126,13,1,0 +BRDA:168,14,0,0 +BRDA:168,14,1,0 +BRDA:169,15,0,0 +BRDA:169,15,1,0 +BRDA:170,16,0,0 +BRDA:170,16,1,0 +BRDA:177,17,0,0 +BRDA:177,17,1,0 +BRDA:189,18,0,0 +BRDA:189,18,1,0 +BRDA:194,19,0,0 +BRDA:194,19,1,0 +BRDA:215,20,0,0 +BRDA:215,20,1,0 +BRDA:219,21,0,0 +BRDA:219,21,1,0 +BRDA:243,22,0,0 +BRDA:243,22,1,0 +BRDA:243,23,0,0 +BRDA:243,23,1,0 +BRDA:257,24,0,0 +BRDA:257,24,1,0 +BRDA:261,25,0,0 +BRDA:261,25,1,0 +BRDA:283,26,0,0 +BRDA:283,26,1,0 +BRDA:284,27,0,0 +BRDA:284,27,1,0 +BRDA:285,28,0,0 +BRDA:285,28,1,0 +BRDA:293,29,0,0 +BRDA:293,29,1,0 +BRDA:305,30,0,0 +BRDA:305,30,1,0 +BRDA:310,31,0,0 +BRDA:310,31,1,0 +BRDA:322,32,0,0 +BRDA:322,32,1,0 +BRDA:331,33,0,0 +BRDA:331,33,1,0 +BRDA:331,34,0,0 +BRDA:331,34,1,0 +BRDA:345,35,0,0 +BRDA:345,35,1,0 +BRDA:349,36,0,0 +BRDA:349,36,1,0 +BRDA:376,37,0,0 +BRDA:376,37,1,0 +BRDA:377,38,0,0 +BRDA:377,38,1,0 +BRDA:378,39,0,0 +BRDA:378,39,1,0 +BRDA:399,40,0,0 +BRDA:399,40,1,0 +BRDA:413,41,0,0 +BRDA:413,41,1,0 +BRDA:415,42,0,0 +BRDA:415,42,1,0 +BRDA:420,43,0,0 +BRDA:420,43,1,0 +BRDA:423,44,0,0 +BRDA:423,44,1,0 +BRDA:423,44,2,0 +BRDA:437,45,0,0 +BRDA:437,45,1,0 +BRDA:437,46,0,0 +BRDA:437,46,1,0 +BRDA:438,47,0,0 +BRDA:438,47,1,0 +BRDA:447,48,0,0 +BRDA:447,48,1,0 +BRDA:452,49,0,0 +BRDA:452,49,1,0 +BRDA:457,50,0,0 +BRDA:457,50,1,0 +BRDA:461,51,0,0 +BRDA:461,51,1,0 +BRDA:465,52,0,0 +BRDA:465,52,1,0 +BRDA:465,52,2,0 +BRDA:481,53,0,0 +BRDA:481,53,1,0 +BRDA:483,54,0,0 +BRDA:483,54,1,0 +BRDA:485,55,0,0 +BRDA:485,55,1,0 +BRDA:487,56,0,0 +BRDA:487,56,1,0 +BRDA:509,57,0,0 +BRDA:509,57,1,0 +BRDA:536,58,0,0 +BRDA:536,58,1,0 +BRDA:536,58,2,0 +BRDA:536,58,3,0 +BRDA:558,59,0,0 +BRDA:558,59,1,0 +BRDA:558,60,0,0 +BRDA:558,60,1,0 +BRDA:572,61,0,0 +BRDA:572,61,1,0 +BRDA:575,62,0,0 +BRDA:575,62,1,0 +BRDA:603,63,0,0 +BRDA:603,63,1,0 +BRDA:604,64,0,0 +BRDA:604,64,1,0 +BRDA:604,65,0,0 +BRDA:604,65,1,0 +BRDA:606,66,0,0 +BRDA:606,66,1,0 +BRDA:606,67,0,0 +BRDA:606,67,1,0 +BRDA:615,68,0,0 +BRDA:615,68,1,0 +BRDA:638,69,0,0 +BRDA:638,69,1,0 +BRDA:640,70,0,0 +BRDA:640,70,1,0 +BRDA:644,71,0,0 +BRDA:644,71,1,0 +BRDA:644,71,2,0 +BRDA:644,71,3,0 +BRDA:656,72,0,0 +BRDA:656,72,1,0 +BRDA:662,73,0,0 +BRDA:662,73,1,0 +BRDA:662,74,0,0 +BRDA:662,74,1,0 +BRDA:670,75,0,0 +BRDA:670,75,1,0 +BRDA:679,76,0,0 +BRDA:679,76,1,0 +BRDA:682,77,0,0 +BRDA:682,77,1,0 +BRDA:694,78,0,0 +BRDA:694,78,1,0 +BRDA:705,79,0,0 +BRDA:705,79,1,0 +BRDA:705,79,2,0 +BRDA:705,79,3,0 +BRDA:713,80,0,0 +BRDA:713,80,1,0 +BRDA:720,81,0,0 +BRDA:720,81,1,0 +BRDA:724,82,0,0 +BRDA:724,82,1,0 +BRDA:731,83,0,0 +BRDA:731,83,1,0 +BRDA:765,84,0,0 +BRDA:765,84,1,0 +BRDA:767,85,0,0 +BRDA:767,85,1,0 +BRDA:767,86,0,0 +BRDA:767,86,1,0 +BRDA:770,87,0,0 +BRDA:770,87,1,0 +BRDA:778,88,0,0 +BRDA:778,88,1,0 +BRDA:778,89,0,0 +BRDA:778,89,1,0 +BRDA:790,90,0,0 +BRDA:790,90,1,0 +BRDA:793,91,0,0 +BRDA:793,91,1,0 +BRDA:793,92,0,0 +BRDA:793,92,1,0 +BRDA:795,93,0,0 +BRDA:795,93,1,0 +BRDA:810,94,0,0 +BRDA:810,94,1,0 +BRDA:811,95,0,0 +BRDA:811,95,1,0 +BRDA:819,96,0,0 +BRDA:819,96,1,0 +BRDA:849,97,0,0 +BRDA:849,97,1,0 +BRDA:852,98,0,0 +BRDA:852,98,1,0 +BRDA:855,99,0,0 +BRDA:855,99,1,0 +BRDA:858,100,0,0 +BRDA:858,100,1,0 +BRDA:862,101,0,0 +BRDA:862,101,1,0 +BRDA:863,102,0,0 +BRDA:863,102,1,0 +BRDA:871,103,0,0 +BRDA:871,103,1,0 +BRDA:887,104,0,0 +BRDA:887,104,1,0 +BRDA:887,105,0,0 +BRDA:887,105,1,0 +BRDA:898,106,0,0 +BRDA:898,106,1,0 +BRDA:898,107,0,0 +BRDA:898,107,1,0 +BRDA:904,108,0,0 +BRDA:904,108,1,0 +BRDA:904,109,0,0 +BRDA:904,109,1,0 +BRDA:910,110,0,0 +BRDA:910,110,1,0 +BRDA:915,111,0,0 +BRDA:915,111,1,0 +BRDA:918,112,0,0 +BRDA:918,112,1,0 +BRDA:921,113,0,0 +BRDA:921,113,1,0 +BRDA:924,114,0,0 +BRDA:924,114,1,0 +BRDA:928,115,0,0 +BRDA:928,115,1,0 +BRDA:929,116,0,0 +BRDA:929,116,1,0 +BRDA:937,117,0,0 +BRDA:937,117,1,0 +BRDA:953,118,0,0 +BRDA:953,118,1,0 +BRDA:964,119,0,0 +BRDA:964,119,1,0 +BRDA:982,120,0,0 +BRDA:982,120,1,0 +BRDA:985,121,0,0 +BRDA:985,121,1,0 +BRDA:988,122,0,0 +BRDA:988,122,1,0 +BRDA:991,123,0,0 +BRDA:991,123,1,0 +BRDA:997,124,0,0 +BRDA:997,124,1,0 +BRDA:1000,125,0,0 +BRDA:1000,125,1,0 +BRDA:1010,126,0,0 +BRDA:1010,126,1,0 +BRDA:1014,127,0,0 +BRDA:1014,127,1,0 +BRDA:1025,128,0,0 +BRDA:1025,128,1,0 +BRDA:1028,129,0,0 +BRDA:1028,129,1,0 +BRDA:1031,130,0,0 +BRDA:1031,130,1,0 +BRDA:1043,131,0,0 +BRDA:1043,131,1,0 +BRDA:1043,132,0,0 +BRDA:1043,132,1,0 +BRDA:1055,133,0,0 +BRDA:1055,133,1,0 +BRDA:1057,134,0,0 +BRDA:1057,134,1,0 +BRDA:1059,135,0,0 +BRDA:1059,135,1,0 +BRDA:1061,136,0,0 +BRDA:1061,136,1,0 +BRDA:1078,137,0,0 +BRDA:1078,137,1,0 +BRDA:1087,138,0,0 +BRDA:1087,138,1,0 +BRDA:1091,139,0,0 +BRDA:1091,139,1,0 +BRDA:1092,140,0,0 +BRDA:1092,140,1,0 +BRDA:1098,141,0,0 +BRDA:1098,141,1,0 +BRDA:1104,142,0,0 +BRDA:1104,142,1,0 +BRDA:1113,143,0,0 +BRDA:1113,143,1,0 +BRDA:1120,144,0,0 +BRDA:1120,144,1,0 +BRDA:1123,145,0,0 +BRDA:1123,145,1,0 +BRDA:1124,146,0,0 +BRDA:1124,146,1,0 +BRDA:1140,147,0,0 +BRDA:1140,147,1,0 +BRDA:1141,148,0,0 +BRDA:1141,148,1,0 +BRF:306 +BRH:0 +end_of_record +TN: +SF:src/frontend/registers.ts +FN:5,(anonymous_9) +FN:11,(anonymous_10) +FN:30,(anonymous_11) +FN:32,(anonymous_12) +FN:36,(anonymous_13) +FN:40,(anonymous_14) +FN:44,(anonymous_15) +FN:55,(anonymous_16) +FN:84,(anonymous_17) +FN:88,(anonymous_18) +FN:113,(anonymous_19) +FN:117,(anonymous_20) +FN:121,(anonymous_21) +FN:132,(anonymous_22) +FN:136,(anonymous_23) +FN:147,(anonymous_24) +FN:147,(anonymous_25) +FN:155,(anonymous_26) +FN:164,(anonymous_27) +FN:189,(anonymous_28) +FN:205,(anonymous_29) +FN:209,(anonymous_30) +FN:217,(anonymous_31) +FN:226,(anonymous_32) +FN:230,(anonymous_33) +FN:232,(anonymous_34) +FN:238,(anonymous_35) +FN:246,(anonymous_36) +FN:254,(anonymous_37) +FN:255,(anonymous_38) +FN:256,(anonymous_39) +FN:268,(anonymous_40) +FN:272,(anonymous_41) +FN:276,(anonymous_42) +FN:285,(anonymous_43) +FN:287,(anonymous_44) +FN:298,(anonymous_45) +FN:300,(anonymous_46) +FN:312,(anonymous_47) +FN:313,(anonymous_48) +FN:319,(anonymous_49) +FN:327,(anonymous_50) +FN:329,(anonymous_51) +FN:333,(anonymous_52) +FN:339,(anonymous_53) +FN:346,(anonymous_54) +FN:353,(anonymous_55) +FN:359,(anonymous_56) +FNF:48 +FNH:0 +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:0,(anonymous_48) +FNDA:0,(anonymous_49) +FNDA:0,(anonymous_50) +FNDA:0,(anonymous_51) +FNDA:0,(anonymous_52) +FNDA:0,(anonymous_53) +FNDA:0,(anonymous_54) +FNDA:0,(anonymous_55) +FNDA:0,(anonymous_56) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:30,0 +DA:33,0 +DA:37,0 +DA:41,0 +DA:45,0 +DA:49,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:60,0 +DA:61,0 +DA:73,0 +DA:74,0 +DA:81,0 +DA:85,0 +DA:89,0 +DA:90,0 +DA:92,0 +DA:93,0 +DA:95,0 +DA:96,0 +DA:98,0 +DA:99,0 +DA:102,0 +DA:103,0 +DA:110,0 +DA:114,0 +DA:118,0 +DA:122,0 +DA:124,0 +DA:126,0 +DA:128,0 +DA:133,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:145,0 +DA:146,0 +DA:147,0 +DA:150,0 +DA:154,0 +DA:156,0 +DA:157,0 +DA:158,0 +DA:159,0 +DA:161,0 +DA:165,0 +DA:166,0 +DA:168,0 +DA:170,0 +DA:171,0 +DA:173,0 +DA:174,0 +DA:176,0 +DA:177,0 +DA:179,0 +DA:183,0 +DA:186,0 +DA:190,0 +DA:191,0 +DA:193,0 +DA:195,0 +DA:197,0 +DA:199,0 +DA:206,0 +DA:210,0 +DA:211,0 +DA:213,0 +DA:217,0 +DA:218,0 +DA:219,0 +DA:220,0 +DA:221,0 +DA:222,0 +DA:223,0 +DA:227,0 +DA:231,0 +DA:232,0 +DA:233,0 +DA:235,0 +DA:239,0 +DA:240,0 +DA:243,0 +DA:244,0 +DA:246,0 +DA:247,0 +DA:248,0 +DA:249,0 +DA:255,0 +DA:256,0 +DA:257,0 +DA:258,0 +DA:259,0 +DA:260,0 +DA:261,0 +DA:264,0 +DA:269,0 +DA:273,0 +DA:274,0 +DA:276,0 +DA:277,0 +DA:278,0 +DA:279,0 +DA:280,0 +DA:284,0 +DA:285,0 +DA:286,0 +DA:287,0 +DA:288,0 +DA:289,0 +DA:290,0 +DA:292,0 +DA:293,0 +DA:297,0 +DA:298,0 +DA:299,0 +DA:300,0 +DA:301,0 +DA:302,0 +DA:309,0 +DA:313,0 +DA:314,0 +DA:316,0 +DA:320,0 +DA:321,0 +DA:322,0 +DA:325,0 +DA:326,0 +DA:327,0 +DA:329,0 +DA:332,0 +DA:333,0 +DA:336,0 +DA:340,0 +DA:341,0 +DA:342,0 +DA:343,0 +DA:347,0 +DA:348,0 +DA:349,0 +DA:350,0 +DA:354,0 +DA:355,0 +LF:159 +LH:0 +BRDA:5,0,0,0 +BRDA:5,0,1,0 +BRDA:60,1,0,0 +BRDA:60,1,1,0 +BRDA:60,2,0,0 +BRDA:60,2,1,0 +BRDA:73,3,0,0 +BRDA:73,3,1,0 +BRDA:90,4,0,0 +BRDA:90,4,1,0 +BRDA:90,4,2,0 +BRDA:102,5,0,0 +BRDA:102,5,1,0 +BRDA:102,6,0,0 +BRDA:102,6,1,0 +BRDA:105,7,0,0 +BRDA:105,7,1,0 +BRDA:122,8,0,0 +BRDA:122,8,1,0 +BRDA:122,8,2,0 +BRDA:138,9,0,0 +BRDA:138,9,1,0 +BRDA:138,10,0,0 +BRDA:138,10,1,0 +BRDA:145,11,0,0 +BRDA:145,11,1,0 +BRDA:168,12,0,0 +BRDA:168,12,1,0 +BRDA:168,12,2,0 +BRDA:168,12,3,0 +BRDA:180,13,0,0 +BRDA:180,13,1,0 +BRDA:191,14,0,0 +BRDA:191,14,1,0 +BRDA:191,14,2,0 +BRDA:191,14,3,0 +BRDA:199,15,0,0 +BRDA:199,15,1,0 +BRDA:206,16,0,0 +BRDA:206,16,1,0 +BRDA:210,17,0,0 +BRDA:210,17,1,0 +BRDA:239,18,0,0 +BRDA:239,18,1,0 +BRDA:243,19,0,0 +BRDA:243,19,1,0 +BRDA:260,20,0,0 +BRDA:260,20,1,0 +BRDA:277,21,0,0 +BRDA:277,21,1,0 +BRDA:284,22,0,0 +BRDA:284,22,1,0 +BRDA:286,23,0,0 +BRDA:286,23,1,0 +BRDA:288,24,0,0 +BRDA:288,24,1,0 +BRDA:289,25,0,0 +BRDA:289,25,1,0 +BRDA:292,26,0,0 +BRDA:292,26,1,0 +BRDA:299,27,0,0 +BRDA:299,27,1,0 +BRDA:301,28,0,0 +BRDA:301,28,1,0 +BRDA:301,29,0,0 +BRDA:301,29,1,0 +BRDA:321,30,0,0 +BRDA:321,30,1,0 +BRDA:325,31,0,0 +BRDA:325,31,1,0 +BRDA:326,32,0,0 +BRDA:326,32,1,0 +BRDA:332,33,0,0 +BRDA:332,33,1,0 +BRDA:354,34,0,0 +BRDA:354,34,1,0 +BRF:76 +BRH:0 +end_of_record \ No newline at end of file diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..67a4bce --- /dev/null +++ b/jest.config.js @@ -0,0 +1,14 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + testMatch: ['**/__tests__/**/*.test.ts', '**/*.test.ts'], + collectCoverageFrom: [ + '**/*.ts', + '!**/node_modules/**', + '!**/dist/**', + '!**/*.test.ts', + '!**/*.spec.ts', + '!**/*.d.ts', + ], + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'], +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 54684dc..f92cbe9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,8 +13,13 @@ "xml2js": "^0.6.2" }, "devDependencies": { + "@types/jest": "^30.0.0", + "@types/js-yaml": "^4.0.9", "@types/node": "^22.0.0", "@types/vscode": "~1.82.0", + "jest": "^30.3.0", + "js-yaml": "^4.1.1", + "ts-jest": "^29.4.6", "ts-loader": "^9.5.4", "typescript": "^5.9.3", "webpack": "~5.105.4", @@ -24,6 +29,522 @@ "vscode": "^1.82.0" } }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "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/core/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "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-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "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-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, + "license": "MIT", + "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.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "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, + "license": "MIT" + }, "node_modules/@discoveryjs/json-ext": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", @@ -34,6 +555,482 @@ "node": ">=14.17.0" } }, + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "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, + "license": "ISC", + "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/@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, + "license": "ISC", + "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/load-nyc-config/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, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", + "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", + "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.3.0", + "jest-config": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-resolve-dependencies": "30.3.0", + "jest-runner": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "jest-watcher": "30.3.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", + "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", + "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "30.3.0", + "jest-snapshot": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", + "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", + "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@sinonjs/fake-timers": "^15.0.0", + "@types/node": "*", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", + "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/types": "30.3.0", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", + "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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/jest-worker": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", + "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.3.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/snapshot-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", + "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", + "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/types": "30.3.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", + "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", + "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/types": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", + "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -45,6 +1042,17 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -84,6 +1092,126 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz", + "integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "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.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", @@ -113,6 +1241,51 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -130,6 +1303,13 @@ "undici-types": "~6.21.0" } }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/vscode": { "version": "1.82.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.82.0.tgz", @@ -137,6 +1317,299 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@vscode/debugadapter": { "version": "1.68.0", "resolved": "https://registry.npmjs.org/@vscode/debugadapter/-/debugadapter-1.68.0.tgz", @@ -451,6 +1924,35 @@ "ajv": "^8.8.2" } }, + "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, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -467,6 +1969,133 @@ "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, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/babel-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", + "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "30.3.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", + "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@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-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", + "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + } + }, + "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, + "license": "MIT" + }, "node_modules/baseline-browser-mapping": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", @@ -480,6 +2109,16 @@ "node": ">=6.0.0" } }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -527,6 +2166,29 @@ "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, + "license": "MIT", + "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, + "license": "Apache-2.0", + "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", @@ -534,6 +2196,26 @@ "dev": true, "license": "MIT" }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001777", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz", @@ -572,6 +2254,16 @@ "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, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", @@ -582,6 +2274,107 @@ "node": ">=6.0" } }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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, + "license": "MIT" + }, + "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, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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, + "license": "MIT", + "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/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -597,6 +2390,24 @@ "node": ">=6" } }, + "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, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -631,6 +2442,20 @@ "dev": true, "license": "MIT" }, + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -646,6 +2471,66 @@ "node": ">= 8" } }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": 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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.5.307", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz", @@ -653,6 +2538,26 @@ "dev": true, "license": "ISC" }, + "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, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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, + "license": "MIT" + }, "node_modules/enhanced-resolve": { "version": "5.20.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz", @@ -680,6 +2585,16 @@ "node": ">=4" } }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-module-lexer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", @@ -697,6 +2612,16 @@ "node": ">=6" } }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -711,6 +2636,20 @@ "node": ">=8.0.0" } }, + "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, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -754,6 +2693,65 @@ "node": ">=0.8.x" } }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "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/execa/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, + "license": "ISC" + }, + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -761,6 +2759,13 @@ "dev": true, "license": "MIT" }, + "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, + "license": "MIT" + }, "node_modules/fast-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", @@ -788,6 +2793,16 @@ "node": ">= 4.9.1" } }, + "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, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -825,6 +2840,45 @@ "flat": "cli.js" } }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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, + "license": "ISC" + }, + "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, + "license": "MIT", + "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", @@ -835,6 +2889,71 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "license": "MIT", + "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, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -849,6 +2968,38 @@ "dev": true, "license": "ISC" }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -872,6 +3023,23 @@ "node": ">= 0.4" } }, + "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, + "license": "MIT" + }, + "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, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -892,6 +3060,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "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, + "license": "ISC" + }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -902,6 +3099,13 @@ "node": ">=10.13.0" } }, + "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, + "license": "MIT" + }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -918,6 +3122,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -941,6 +3165,19 @@ "node": ">=0.10.0" } }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -958,6 +3195,813 @@ "node": ">=0.10.0" } }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", + "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.3.0", + "@jest/types": "30.3.0", + "import-local": "^3.2.0", + "jest-cli": "30.3.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", + "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1", + "jest-util": "30.3.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-changed-files/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, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-circus": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", + "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "p-limit": "^3.1.0", + "pretty-format": "30.3.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-circus/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, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-cli": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", + "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", + "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.3.0", + "@jest/types": "30.3.0", + "babel-jest": "30.3.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-circus": "30.3.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-runner": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "parse-json": "^5.2.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", + "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.3.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", + "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "jest-util": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", + "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", + "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "picomatch": "^4.0.3", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", + "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.3.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-haste-map/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-leak-detector": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", + "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", + "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", + "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.3.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-mock": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", + "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", + "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", + "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", + "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/environment": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-leak-detector": "30.3.0", + "jest-message-util": "30.3.0", + "jest-resolve": "30.3.0", + "jest-runtime": "30.3.0", + "jest-util": "30.3.0", + "jest-watcher": "30.3.0", + "jest-worker": "30.3.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", + "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.3.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner/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, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "BSD-3-Clause", + "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, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runner/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-runtime": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", + "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/globals": "30.3.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", + "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "pretty-format": "30.3.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", + "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-validate": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", + "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", + "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.3.0", + "string-length": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -989,6 +4033,39 @@ "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, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "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", @@ -1003,6 +4080,19 @@ "dev": true, "license": "MIT" }, + "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, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -1013,6 +4103,23 @@ "node": ">=0.10.0" } }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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, + "license": "MIT" + }, "node_modules/loader-runner": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", @@ -1040,6 +4147,56 @@ "node": ">=8" } }, + "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, + "license": "MIT" + }, + "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, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "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, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "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", @@ -1084,6 +4241,82 @@ "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "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, + "license": "MIT" + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -1091,6 +4324,13 @@ "dev": true, "license": "MIT" }, + "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==", + "dev": true, + "license": "MIT" + }, "node_modules/node-releases": { "version": "2.0.36", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", @@ -1098,6 +4338,55 @@ "dev": true, "license": "MIT" }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "ISC", + "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, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -1137,6 +4426,32 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "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, + "license": "MIT", + "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", @@ -1147,6 +4462,16 @@ "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, + "license": "MIT", + "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", @@ -1164,6 +4489,30 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -1184,6 +4533,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -1197,6 +4556,58 @@ "node": ">=8" } }, + "node_modules/pretty-format": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", @@ -1210,6 +4621,16 @@ "node": ">= 10.13.0" } }, + "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, + "license": "MIT", + "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", @@ -1342,6 +4763,29 @@ "node": ">=8" } }, + "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, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/source-map": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", @@ -1373,6 +4817,200 @@ "node": ">=0.10.0" } }, + "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, + "license": "BSD-3-Clause" + }, + "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, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "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/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, + "license": "MIT", + "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/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/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, + "license": "MIT" + }, + "node_modules/string-width-cjs/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -1399,6 +5037,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, "node_modules/tapable": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", @@ -1466,6 +5120,74 @@ } } }, + "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, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "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/test-exclude/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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, + "license": "BSD-3-Clause" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1479,6 +5201,72 @@ "node": ">=8.0" } }, + "node_modules/ts-jest": { + "version": "29.4.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz", + "integrity": "sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.8", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.7.3", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jest-util": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ts-loader": { "version": "9.5.4", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", @@ -1500,6 +5288,37 @@ "webpack": "^5.0.0" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "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, + "license": "MIT", + "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, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -1514,6 +5333,20 @@ "node": ">=14.17" } }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -1521,6 +5354,41 @@ "dev": true, "license": "MIT" }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -1552,6 +5420,31 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "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, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, "node_modules/watchpack": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", @@ -1716,6 +5609,129 @@ "dev": true, "license": "MIT" }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "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/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, + "license": "MIT", + "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/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/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, + "license": "MIT" + }, + "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, + "license": "MIT", + "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-cjs/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/xml2js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", @@ -1737,6 +5753,110 @@ "engines": { "node": ">=4.0" } + }, + "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, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "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, + "license": "MIT", + "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/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, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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, + "license": "MIT" + }, + "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, + "license": "MIT", + "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/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 70718d4..6b9eb2d 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,10 @@ "url": "https://github.com/Jason2866/pioarduino-vscode-debug.git" }, "scripts": { - "build": "webpack --mode production" + "build": "webpack --mode production", + "test": "jest", + "test:watch": "jest --watch", + "test:coverage": "jest --coverage" }, "dependencies": { "@vscode/debugadapter": "^1.68.0", @@ -19,11 +22,16 @@ "xml2js": "^0.6.2" }, "devDependencies": { + "@types/jest": "^30.0.0", + "@types/js-yaml": "^4.0.9", "@types/node": "^22.0.0", "@types/vscode": "~1.82.0", + "jest": "^30.3.0", + "js-yaml": "^4.1.1", + "ts-jest": "^29.4.6", "ts-loader": "^9.5.4", "typescript": "^5.9.3", "webpack": "~5.105.4", "webpack-cli": "~6.0.1" } -} +} \ No newline at end of file